Qt5 自定义上下文菜单忽略样式 sheet
Qt5 custom context menu ignoring style sheet
我有两个编辑器 类,比如 BaseEditor
和 AdvancedEditor
。 BaseEditor
继承自 QPlaintTextEdit
,其标准上下文菜单完全遵循我的风格 sheet。
我的 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 样式中包含以下部分 sheet(适用于所有其他菜单),但此菜单仍以默认 OS 设计呈现:
QMenu {
background-color: white;
border: 1px solid #4495D1;
padding: 1px;
}
我尝试按照此处所述添加自定义 paintEvent()
,但没有成功:http://qt-project.org/forums/viewthread/25664/#117575。我需要另一个 PE_* 类型吗?
将 pMenu
的父窗口小部件设置为具有您的样式表的窗口小部件。
我有两个编辑器 类,比如 BaseEditor
和 AdvancedEditor
。 BaseEditor
继承自 QPlaintTextEdit
,其标准上下文菜单完全遵循我的风格 sheet。
我的 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 样式中包含以下部分 sheet(适用于所有其他菜单),但此菜单仍以默认 OS 设计呈现:
QMenu {
background-color: white;
border: 1px solid #4495D1;
padding: 1px;
}
我尝试按照此处所述添加自定义 paintEvent()
,但没有成功:http://qt-project.org/forums/viewthread/25664/#117575。我需要另一个 PE_* 类型吗?
将 pMenu
的父窗口小部件设置为具有您的样式表的窗口小部件。