我有两个编辑器类,比如说BaseEditor
和AdvancedEditor
. BaseEditor
继承自QPlaintTextEdit
并且其标准上下文菜单正确地遵循我的样式表。
My AdvancedEditor
now 继承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_* 类型吗?