У меня есть два класса редактора, скажем, BaseEditor
и AdvancedEditor
. BaseEditor
наследуется от QPlaintTextEdit
, и его стандартное контекстное меню правильно соответствует моей таблице стилей.
Мой 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_*?