[Gelöst] Verwenden von Stylesheets mit QLabel

Alles rund um die Programmierung mit Qt
Antworten
Nukleus
Beiträge: 44
Registriert: 16. April 2010 13:32

[Gelöst] Verwenden von Stylesheets mit QLabel

Beitrag von Nukleus »

Hallo,

ich habe ein kleines Problem beim Anwenden von Stylesheets auf QLabel-Elemente.

Ich habe eine kleine Tabelle bestehend aus einzelnen QLabels, von denen einige den Text in Fettdruck und die übrigen den Text in Normaldruck darstellen sollen. Die Tabelle besteht schon und funktioniert auch (fast) so, wie ich es will. Aber: Ich muß die Eigenschaft "Fettdruck" oder nicht händisch per Code setzen.

Mir kam nun der Gedanke, daß gegenwärtige Lösung relativ unflexibel ist. Besser wäre es, wenn man die betreffende Eigenschaft via Stylesheet setzen könnte.

Deshalb habe ich den einzelnen Label-Elementen eine dynamische Property mitgegeben, in der hinterlegt ist, ob der Text fett werden soll oder nicht. Die zugehörige (von mir verwendete) Anweisung lautet:

desc->setProperty("textbold", TRUE); /* und die zugeh. Property setzen */

desc ist dabei ein Zeiger auf QLabel. Wenn ich die dynamischen Property-Namen und deren Werte testhalber ausgeben lasse, dann haben die Labelelemente auch die richtigen (d.h. die von mir gewünschten) Werte.

Auf das Ganze lasse ich dann folgendes Stylesheet los:

*[textbold="FALSE"] {font-family:'Arial'; font-size:12px; font-weight:'Normal'} *[textbold="TRUE"] {font-family:'Arial'; font-size:11px; font-weight:'Bold'} SummaryDetailsListe {border:1px solid black}

Das gesamte Widget ist von der Klasse SummaryDetailsListe und um dieses wird auch schön ein Rahmen gezeichnet, d.h. irgendetwas bewirkt mein Stylesheet. Nur der Text meiner QLabels wird nicht fett dargestellt. Das Stylesheet ist schon definiert, wenn ich die Labels anlege. Es hat aber auch nichts gebracht, wenn ich das Stylesheet erst dann definiere, wenn die Labels schon angelegt sind.

Kann mir vielleicht jemand einen Tipp geben, was ich falsch mache?
Zuletzt geändert von Nukleus am 19. Februar 2015 16:59, insgesamt 1-mal geändert.
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Re: Verwenden von Stylesheets mit QLabel

Beitrag von archer »

Ich würde es so machen:

Code: Alles auswählen

desc->setProperty("textbold", true); /* und die zugeh. Property setzen */

Code: Alles auswählen

  
pMyContentWidget->setStyleSheet(
            " .QLabel[textbold=\"true\"] {"
            "    font-size: 11px;"
            "    font-weight: bold;"
            " }"
            " .QLabel {"
            "    font-size: 12px;"
            "    font-weight: normal;"
            " }");
Nukleus
Beiträge: 44
Registriert: 16. April 2010 13:32

Re: [Gelöst] Verwenden von Stylesheets mit QLabel

Beitrag von Nukleus »

Die Ursache war das Stylsheet selbst. Die Hochkommata, in denen ich die Weight des Fonts eingeschlossen habe, waren falsch. Richtig lautet das Stylesheet

*[textbold=\"FALSE\"] {font-family:'Arial'; font-size:11px; font-weight:Normal} *[textbold=\"TRUE\"] {font-family:'Arial'; font-size:11px; font-weight:Bold} SummaryDetailsListe {border:1px solid black}

und damit tat es ohne weitere Änderung.
Antworten