merkwürdiges Problem: schwarzer Hintergrund in QWidget/Backg
Verfasst: 11. November 2008 19:04
Hallo Forum!
Ich habe ein äusserst merkwürdiges Problem mit Qt4.4.3. Ich habe ein QWidget geschrieben mit einem Hintergrundbild. Ich habe mein Programm auf folgenden Plattformen ohne Problem statisch gebuildet:
linux x86_64 (debian lenny)
Os X
Windows
Nun, wenn ich es aber auf linux 32 bit kompiliere, passiert beim Ausführen des Programms folgendes:
Während ganz ganz kurzer Zeit ist das Hintergrundbild zu sehen, und dann wird der ganze Hintergrund schwarz. Die Labels sind dann auch nicht mehr lesbar, da sie auch schwarz sind.
Das Pixmap ist also richtig gesetzt und wird auch einmal auf den Bildschirm gemalt, jedoch sofort wieder mit schwarz übermalt.
Ich habe etliche Posts durchgelesen zum Thema Hintergrundbild, habe etliche Variationen ausprobiert, bin aber immer noch nicht auf eine Lösung gekommen. Beim Ausprobieren ist mir folgendes aufgefallen, was mir noch viel viel komischer scheint:
Wenn ich absichtlich einen falschen QPixmap Konstruktor einbaue (z.B. mit falschem Dateinamen) ist das Hintergrundbild zu sehen, das beim letzten Aufruf des Programms hätte dargestellt werden sollen! Jedoch wird dann das Widget nicht mehr refreshed: Ich habe Labels, die sich ändern, und statt sich zu ändern überschreiben sie sich und es gibt einen rechten Salat auf dem Bildschirm. Beim Verlassen des programms und erneutem Ausführen kommt wider dasselbe Bild wie kurz vor dem Verlassen! Es besteht also eine Verbindung zwischen den zwei Instanzen, obwohl sie nacheinander aufgerufen worden sind!
Beim wieder richtigen QPixmap konstruktor wird alles wider schwarz. Ich habe in meinem QWidget Konstruktor folgenden Code:
Der Code ist wahrscheinlich schon richtig, sonst würde es nicht unter den erwähnten 3 Plattformen tadellos funktionieren. Kann mir jemand helfen??
Edit:
In der kurzen Zeit, in der das Hintergrundbild sichtbar ist, sind alle anderen Widgets nicht sichtbar. Sie werden gleichzeitig beim Wechsel auf den schwarzen Hintergrund sichtbar.
Ich habe ein äusserst merkwürdiges Problem mit Qt4.4.3. Ich habe ein QWidget geschrieben mit einem Hintergrundbild. Ich habe mein Programm auf folgenden Plattformen ohne Problem statisch gebuildet:
linux x86_64 (debian lenny)
Os X
Windows
Nun, wenn ich es aber auf linux 32 bit kompiliere, passiert beim Ausführen des Programms folgendes:
Während ganz ganz kurzer Zeit ist das Hintergrundbild zu sehen, und dann wird der ganze Hintergrund schwarz. Die Labels sind dann auch nicht mehr lesbar, da sie auch schwarz sind.
Das Pixmap ist also richtig gesetzt und wird auch einmal auf den Bildschirm gemalt, jedoch sofort wieder mit schwarz übermalt.
Ich habe etliche Posts durchgelesen zum Thema Hintergrundbild, habe etliche Variationen ausprobiert, bin aber immer noch nicht auf eine Lösung gekommen. Beim Ausprobieren ist mir folgendes aufgefallen, was mir noch viel viel komischer scheint:
Wenn ich absichtlich einen falschen QPixmap Konstruktor einbaue (z.B. mit falschem Dateinamen) ist das Hintergrundbild zu sehen, das beim letzten Aufruf des Programms hätte dargestellt werden sollen! Jedoch wird dann das Widget nicht mehr refreshed: Ich habe Labels, die sich ändern, und statt sich zu ändern überschreiben sie sich und es gibt einen rechten Salat auf dem Bildschirm. Beim Verlassen des programms und erneutem Ausführen kommt wider dasselbe Bild wie kurz vor dem Verlassen! Es besteht also eine Verbindung zwischen den zwei Instanzen, obwohl sie nacheinander aufgerufen worden sind!
Beim wieder richtigen QPixmap konstruktor wird alles wider schwarz. Ich habe in meinem QWidget Konstruktor folgenden Code:
Code: Alles auswählen
QPixmap bg("background.xpm");
QPalette p(palette());
p.setBrush(QPalette::Background, bg);
setPalette(p);
Edit:
In der kurzen Zeit, in der das Hintergrundbild sichtbar ist, sind alle anderen Widgets nicht sichtbar. Sie werden gleichzeitig beim Wechsel auf den schwarzen Hintergrund sichtbar.