Schriftfarbe von QLabels ändern

Verschiedenes zu Qt
Antworten
insertcoin
Beiträge: 54
Registriert: 19. Mai 2008 13:08

Schriftfarbe von QLabels ändern

Beitrag von insertcoin »

Hey ho ..

ich hab jetzt wirklich schon Ewigkeiten gesucht, aber keine Möglichkeit gefunden die Schrift in QLabels zu färben. Nur den Hintergrund, aber das sieht in meiner Applikation dumm aus ..

Ist es überhaupt irgendwie möglich??

Andere Frage .. Was gibt die Methode

Code: Alles auswählen

QListWidget -> currentItem() -> text() 

zurück wenn kein Element angweählt ist?? Ich hab schon versucht false abzufragen, aber schon bei der Abfrage stürzt mein Programm sofort ab. Jetzt muss ich das sehr unelegant über Umwege abfangen ..

Danke im Vorraus für jede Hilfe ..
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Um die Farbe zu ändern solltest du StyleSheets benutzen.

Und die von dir genannte Funktion würde einen Seg_Fault verursachen, wenn kein Element angewählt ist. Dir wird ein Pointer zum angewählten Element wiedergegeben und 0 wenn kein Element angegeben ist. Und dann versuchst du auf ein nicht existierendes Element zuzugreifen...
insertcoin
Beiträge: 54
Registriert: 19. Mai 2008 13:08

Beitrag von insertcoin »

Ok, danke schonmal ..

Zu der Funktion .. müsste ich dann aber nicht abfragen können ..

Code: Alles auswählen

 if( QListWidget -> currentItem() -> text() ==0)
mach nichts mit dem Wert;
else
Verarbeitung;
Allein durch die if Abfrage stürzt das Programm schon ab ..
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Ja, weil dir currentItem() einen 0 Pointer wiedergibt. Und auf diesen 0 Pointer greifst du mit der Funktion text() zu, was ja nur schief gehen kann...

Du solltest dir vielleicht erst einmal ein C++ Buch zu gemüte führen.
insertcoin
Beiträge: 54
Registriert: 19. Mai 2008 13:08

Beitrag von insertcoin »

Hab schon lang nichts mehr mit C++ gemacht weil ich in letzter Zeit nur noch JAva verwendet hab. Aber da kann ich Rückgabewerte auf nicht vorhandene Referenzen auch mit "null" abfragen .. diese Funktion fehlt mir eben, jetzt weiß ich wenigstens dass es keine andere Möglichkeit gibt !!

Hättest du mir vielleicht ein kleines Beispiel zum Thema QLabel mit CSS färben?? .. Aber nur wenn du schon was rumliegen hast, sonst such ich selber ..
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Ein Pointer ist ein Zeiger auf einen Speicherbereich. Wenn dieser Zeiger nun auf einen falschen Bereich zeigt (z. B. nicht existenten 0, oder anderen Speicher der nicht von deinem Programm reserviert wird), dann wird das Betriebssystem meckern und das Programm stürzt ab. In der Regel setzt man die Zeiger auf 0, wenn sie auf nicht gültigen Speicher zeigen. Dies kann man leider nicht überprüfen, aber durch saubere Programmierung zeigt ein Zeiger immer auf gültigen Speicher oder auf 0. Du kannst dann einfach mit "if currentItem()" überprüfen ob er Zeiger nicht 0 ist. Dann kannst du auch ruhig darauf zugreifen mit "currentItem()->text()".

Wenn dir solch elementare Dinge nicht bekannt sind, solltest du dir wirklich (nochmal?) ein C++ Buch durchlesen. Egal wieviel und was du bisher programmiert hast.



Zu den Style Sheets solltest du dir die Dokumentation "Qt Style Sheets" oder "Qt Style Sheets Examples" anschauen und durchlesen.
insertcoin
Beiträge: 54
Registriert: 19. Mai 2008 13:08

Beitrag von insertcoin »

Genau die if Abfrage die du schreibst hat bei mir nicht funtioniert .. und ich versteh auch nicht warum du gleich solche ANsagen machst, mir gings nie darum was da passiert .. denn das weiß ich, sonst hätt ich ja nicht versucht das zu verhindern oder?!!
ABer du meinst es sicher nur gut, auf jeden Fall danke für die Hilfe!!
zwutz
Beiträge: 14
Registriert: 20. November 2007 09:13

Beitrag von zwutz »

Code: Alles auswählen

if ( !myListWidget->currentItem() )
{
     // mach was
}
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Nach deinem Code hast du folgendes probiert:
"if( QListWidget -> currentItem() -> text() ==0)"

(Ich denke mal statt QListWidget hast du dein Widget.)

Aber genau das verursacht doch den Fehler schon. currentItem() gibt dir einen 0 Pointer zurück, und auf diesen 0 Pointer greifst du mit ->text() zu, was du nicht darfst.
insertcoin
Beiträge: 54
Registriert: 19. Mai 2008 13:08

Beitrag von insertcoin »

Ja stimmt schon, ihr habt beide recht .. ICh hab nicht soweit gedacht, dass ich bei der Überprüfung schon nen Zugriff hab .. ABer dank euch hab ich das ja jetzt erkannt .. ;)
Antworten