2017-03-31 2 views
1

Ich habe ein Qt-Projekt geerbt, das thematische Rechtsklick-Menüs hatte (die auf MacOS wirklich seltsam aussehen). Ich habe den Aufruf von setStyleSheet() aus dem QMenu entfernt, aber es markiert immer noch nur den Text anstelle des Hintergrunds des Elements und verwendet seltsame Schriftgrößen.Die Themen von Menüs in Qt ausschalten?

Gibt es einen anderen Ort in einer Qt-App, wo jemand Farben einstellen könnte, die das Menü irgendwie erben würde?

Das Menü wird über exec() angezeigt und die QMenu und QActions werden mit einem QWidget als Eltern erstellt, falls das hilft.

Antwort

1

Wahrscheinlich wurde es global festgelegt; Suchen Sie nach einem Anruf an QApplication::setStyleSheet, und für einen QMenu Selektor in diesem globalen Stylesheet. Es kann auch in ein Stylesheet eines übergeordneten Widgets eingefügt werden.

Im Allgemeinen, wenn ich Sie wäre, würde ich das Projekt für Stylesheets grep, die einen QMenu Selektor enthalten.

+0

Kein Aufruf von QApplication :: setStyleSheet() in der App. Ich habe sogar alle setStyleSheet() - und setStyle-Aufrufe auskommentiert, die ich finden konnte, und das Hauptfenster ist immer noch schwarz, ebenso wie die Kontextmenüs. – uliwitness

+0

Wenn das Fenster im Designer gezeichnet wurde, prüfen Sie dort die Stylesheet-Eigenschaft (in der .ui-Datei). –

1

Die Stile sind vererbbar. Es kann ein globales Stylesheet oder ein Stylesheet für eines der Widgets geben, die Eltern des angezeigten Menüs sind. Sie müssen sie alle überprüfen und Menüstile entfernen.

Sie könnten die Anwendbarkeit der Menüstile begrenzen, indem eine dynamische Eigenschaft mit beschreiben, ob der Stil gilt oder nicht:

QMenu[styled="true"] { ... } 

Dann wird auf den Plattformen, auf denen die Menüs gestylt werden, gelten die Eigenschaft:

void styleMenu(QMenu * menu) { 
    #ifndef Q_OS_MACOS 
    menu->setProperty("styled", true); 
    #endif 
} 

... 
styleMenu(menu); // no-op on OS X 
+0

Ich löschte alle styleSheets aus den .ui-Dateien und alle setStyle-Aufrufe aus dem Code ... Noch seltsame schwarze Kontextmenüs in der schwarzen Fenster-Inhaltsansicht :( – uliwitness