我有两个编辑器类,比如BaseEditor
和AdvancedEditor
。BaseEditor
继承自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
的父小部件设置为具有样式表的小部件。