Пользовательское контекстное меню Qt5 игнорирует таблицу стилей

У меня есть два класса редактора, скажем, 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_*?


person Philip Allgaier    schedule 24.02.2015    source источник


Ответы (1)


Установите родительский виджет pMenu на тот, у которого есть ваша таблица стилей.

person svlasov    schedule 24.02.2015
comment
Конечно. На самом деле должен был понять это сам. Спасибо! - person Philip Allgaier; 24.02.2015