2015-02-24 4 views
0

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

ответ

2

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

+1

Конечно. На самом деле я должен был это осознать сам. Благодаря! –