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

时间:2015-02-24 13:29:56

标签: qt contextmenu qtstylesheets qmenu qstylesheet

我有两个编辑器课程,比如BaseEditorAdvancedEditorBaseEditor继承自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_ *类型吗?

1 个答案:

答案 0 :(得分:3)

pMenu的父窗口小部件设置为包含样式表的窗口小部件。