2015-02-24 51 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