我有两个编辑器课程,比如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;
}
然而,这个菜单在默认的OS设计中呈现,尽管我在QSS样式表中有以下部分(适用于所有其他菜单):
QMenu {
background-color: white;
border: 1px solid #4495D1;
padding: 1px;
}
我尝试添加自定义paintEvent()
,如此处所述:http://qt-project.org/forums/viewthread/25664/#117575。我需要另一个PE_ *类型吗?
答案 0 :(得分:3)
将pMenu
的父窗口小部件设置为包含样式表的窗口小部件。