Qt5自定义上下文菜单忽略样式表



我有两个编辑器类,比如BaseEditorAdvancedEditorBaseEditor继承自QPlaintTextEdit,其标准上下文菜单正确地遵循了我的样式表。

我的AdvancedEditor现在继承自BaseEditor,并重新实现方法void showContextMenu(const QPoint &point)以生成自定义上下文菜单。在它中,我基本上做以下事情:

void AdvancedEditor::showContextMenu(const QPoint &point)
{ 
    QMenu* pStandardMenu = createStandardContextMenu();
    QMenu* pMenu = new QMenu();
    [add various stuff to pMenu]
    connect(pSignalMapper, SIGNAL(mapped(const QString&)), this, SLOT(onContextMenuSelected(const QString&)));
    pMenu->addSeparator();
    pMenu->addActions(pStandardMenu->actions());
    pMenu->exec(mapToGlobal(point));
    delete pMenu;
}

尽管我的QSS样式表中有以下部分(适用于所有其他菜单),但该菜单仍在默认操作系统设计中呈现:

QMenu {
    background-color: white;
    border: 1px solid #4495D1;
    padding: 1px;
}

我尝试添加此处所述的自定义paintEvent(),但没有任何运气:http://qt-project.org/forums/viewthread/25664/#117575.我需要另一种PE_*类型吗?

pMenu的父小部件设置为具有样式表的小部件。

相关内容

  • 没有找到相关文章

最新更新