1

我有两个编辑器类,比如说BaseEditorAdvancedEditor. BaseEditor继承自QPlaintTextEdit并且其标准上下文菜单正确地遵循我的样式表。

My AdvancedEditornow 继承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_* 类型吗?

4

1 回答 1

4

pMenu的父小部件设置为具有您的样式表的小部件。

于 2015-02-24T13:35:57.277 回答