2015-02-24 54 views
0

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

回答

2

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

+1

当然。真的应该已经意识到,我自己。谢谢! – 2015-02-24 17:40:07