0
我有两个编辑器类,例如BaseEditor
和AdvancedEditor
。 BaseEditor
继承自QPlaintTextEdit
,其标准上下文菜单正确地遵循我的样式表。Qt5自定义上下文菜单忽略样式表
我的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_ *类型吗?
当然。真的应该已经意识到,我自己。谢谢! – 2015-02-24 17:40:07