ändern des zustands von labels während der laufzeit

Alles rund um die Programmierung mit Qt
Antworten
soulsofpetro
Beiträge: 16
Registriert: 3. Dezember 2006 16:57

ändern des zustands von labels während der laufzeit

Beitrag von soulsofpetro »

Hallo Leute,
ich habe ein problem mit dem ich mich schon die letzten paar tage rumschlage.

Ich habe in einem Fenster eine Anzahl von Labels. Auf jedem einzelnen steht ein Buchstabe des alphabets. wenn ich mit der maus über ein Label fahre soll dieser buchstabe der auf dem label steht in ein TextEditor reingeschrieben werden.
das funktioniert soweit ganz gut, da ich das über signals und slots mache.

das layout der ganzen labels und der Editor sind in einer Layout-KLasse, die ich als Singleton implementiert habe. In dieser Layout-Klasse, werde alle Labels erzeugt und Ihnen Wert zugewiesen.

Mein Problem ist nun folgendes:
Wenn ich auf ein bestimmtes Label raufgehe, will ich die Attribute aller labels ändern. Genaugesagt, ich will dass jetzt auf jedem Label anstatt großbuchstaben(also, so wie sie initialisiert wurden), jetzt kleinbuchstaben stehen.

Nun habe ich eine Methode in der Label-Klasse

Code: Alles auswählen

void changeAttributes(const QString &displayString, const QString &insertString, int fontSize );
welche die Anzeige des Labels aber auch den input in das Textfeld ändert. Ich wende diese Methode direkt auf die Objekte die ich in meiner Layout-Klasse erzeugt habe an.

das problem nun ist, dass garnichts passiert wenn ich changeAttributes aufrufe. obwohl changeAttributes direkt die Membervariablen der labels manipuliert.
weiß jemand eine lösung?
ich habe gesehen, dass es in der QWidget klasse eine update() funktion gibt, habe aber nicht verstanden was genau passiert wenn ein update() auf ein widget ausgeführt wird (meine Layout_klasse ist von QWidget abgeleitet)

ich bin echt über jeden tip glücklich.
Dawn
Beiträge: 11
Registriert: 5. Dezember 2006 08:20
Wohnort: Hagen
Kontaktdaten:

Beitrag von Dawn »

versuch doch mal das widget neu zeichnen zu lassen (mit repaint()), nachdem du die attribute änderst.
If you smile and no one else is around, you really mean it
soulsofpetro
Beiträge: 16
Registriert: 3. Dezember 2006 16:57

Beitrag von soulsofpetro »

Nun hat es geklappt. ich habe beim aufrufen von

Code: Alles auswählen

void changeAttributes(const QString &displayString, const QString &insertString, int fontSize ); 
in der gleichen methode ein update(); auf das objekt aufgerufen.
davor habe ich das in der Layout Klasse aufgerufen.
Antworten