0
我有兩個編輯器類,例如BaseEditor
和AdvancedEditor
。 BaseEditor
繼承自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_ *類型嗎?
當然。真的應該已經意識到,我自己。謝謝! – 2015-02-24 17:40:07