У меня есть два класса редактора, скажем BaseEditor
и AdvancedEditor
. BaseEditor
наследует от QPlaintTextEdit
, и его стандартное контекстное меню следует за моей таблицей стилей должным образом.Пользовательское контекстное меню Qt5 игнорирует таблицу стилей
My 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_ *?
Конечно. На самом деле я должен был это осознать сам. Благодаря! –