Qt5 自定义上下文菜单忽略样式 sheet

Qt5 custom context menu ignoring style sheet

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