2016-06-03 15 views
0

In Qt Designer habe ich ein Standard-Druck/Vorschau-Stylesheet in den Einstellungen festgelegt, um das Stylesheet der Anwendung, die meine UIs enthalten wird, anzupassen. Bei der Vorschau werden alle enthaltenen Widgets korrekt formatiert, aber nicht auf der obersten Ebene. Warum? Und was kann ich tun?Kann ich das Top-Level-Formular in der Designer-Vorschau formatieren?

beispielsweise unter Verwendung dieses Sheet:

MyFormBase 
    { background: black; color: white; } 

QLabel 
    { background: transparent; color: yellow; } 

und eine UI-Struktur wie

  • MyFormform (Subklasse von MyFormBase)
    • QLabellabel

Das Label hat gelben Text, aber es auf Designer-Standard (grau) Hintergrund angezeigt wird.

Antwort

0

Wenn der Designer eine Vorschau erstellt, erstellt er eine Ebene QWidget als das oberste Fenster. Daher stimmt jeder Stil, der mit dem Klassennamen des Formulars der obersten Ebene angewendet wird, nicht überein.

Untersuchung der Interna des Designers zeigt, dass es eine Eigenschaft anwendet, um das Top-Level-Fenster zu markieren; wir können mit, dass wählen Sie die Top-Level-Form, Stil:

[_q_custom_style_disabled="true"], /* for preview in Designer */ 
MyFormBase 
    { background: black; color: white; } 

QLabel 
    { background: transparent; color: yellow; } 

Beachten Sie, dass die _q_custom_style_disabled Eigenschaft ist nicht ein dokumentiertes Merkmal Designer kann es so sein, ohne Ankündigung geändert werden.


Wenn Sie viele Wähler haben, die auf Widget abhängen (zB wenn Sie MyFormBase > QLabel haben), oder wenn Sie über den Hack oben besorgt sind, können Sie eine benutzerdefinierte Eigenschaft anwenden:

[role~=Page"] 
    { background: black; color: white; } 

[role~=Page"] > QLabel 
    { background: transparent; color: yellow; } 

Offensichtlich müssen Sie dann daran denken, die Eigenschaft auf das oberste Widget auf jedem Ihrer Formulare anzuwenden!