Verwenden von Stylesheets Ich versuche, den Stil eines Fensters zu ändern, einschließlich aller untergeordneten Elemente.Erzwingen einer Neuberechnung von Qt Stylesheet scheint nichts zu tun
Alle untergeordneten Elemente werden mit setObjectName
benannt und das Stylesheet verwendet den gleichen Namen, um den Stil der benannten Widgets zu ändern (sowie einige Extrakte, die nie geändert werden müssen). Ich aktualisiere das Stylesheet neu, indem ich zuerst Werte in eine std::map
einfüge und Namen wie QWidget#hello!hover
einem Satz von Schlüssel/Wert-Paaren wie background-color
bis #0f0f0f
zuweise. I.e. ["QWidget#hello!hover"]["background-color"] = "#0f0f0f"
, wäre ein Eintrag.
Wenn das Stylesheet Karte geändert wird, ich das gesamte Stylesheet neu berechnen und setzen Sie ihn setStyleSheet
auf dem Haupt-Widget verwenden, /* */
an der Spitze Zugabe (angeblich soll diese eine Neuberechnung des Sheet erzwingen). Dies scheint jedoch überhaupt nichts zu tun.
Dies geschieht im Konstruktor des Haupt-Widget funktioniert gut, aber tut nichts, wenn es erst einmal festgelegt wurde.
Das Stylesheet, das ich berechne, ist gültig und alle Einträge sind so angeordnet, wie ich es erwarte, alle Widgets haben die erwarteten Namen und da es beim ersten Mal funktioniert, vermute ich, dass das Problem auch das ist Das neue Stylesheet hat keine Wirkung oder es hat einfach keine Auswirkung auf die Kinder.
Ich bin mit Qt 5.4 (alte Scheiß Mist Software, die für Qt3 ursprünglich entwickelt wird) auf Windows 10.
Wie kann ich dieses Problem beheben?
Es ist schwer, ohne genaue Beispiele zu sagen, aber. 1) Versuchen Sie, den "Fusion" -Stil standardmäßig zu verwenden. 2) Um das Stylesheet "neu zu laden", müssen Sie 'w-> polish(); w-> unpolish();' aufrufen, ohne ein Stylesheet zurückzusetzen. 3) Dein CSS sieht wirklich komisch aus. Ist es ein Pseudo-Code? –
@DmitrySazonov Wenn das Problem behoben wurde, indem Sie das Stylesheet auf alle untergeordneten Elemente setzen. – Clearer