Seite 1 von 1

[gelöst] Problem mit QPushButton.hide(), Qt4, OpenSUSE 10.3

Verfasst: 4. November 2007 16:15
von preklov
Ich bin Anfänger mit Qt und habe ein Projekt eines Bridge-Biettrainers begonnen.

Die Karten der 4 Spieler werden gemischt und im Fenster oben, rechts, unten, bzw. links angezeigt. Dann öffnet sich der QDialog mit 37 QPushButtons zur Auswahl des Gebots. Die Pushbuttons haben QIcons als Symbole. Nach dem Gebot wird der Dialog zum nächsten Spieler verschoben, der ein höheres Gebot machen muss.

Es sollen nur noch die erlaubten Gebote angezeigt werden. Außerdem soll je nach vorherigem Gebot und Spieler der 37. Button variiert werden.

Methoden: hide() bzw. setIcon(...) und show()

Mein Problem: Das funktioniert zwar wunderbar unter Windows XP, unter Linux aber werden zwar die Pushbuttons deaktiviert, aber die zu verbergenden Icons werden außer dem letzten angezeigt. Wer kennt ein solches Phänomen?

Qt4.3.1, OpenSUSE10.3. KDE3.5.7 mit Qt3.3.8.

Kann Qt3 Probleme machen? Braucht Ihr meinen Code?

Volker

Verfasst: 4. November 2007 20:27
von preklov
Zur weiteren Information, wie es aussehen soll, mit den notwendigen Quellen:

http://www.uni-due.de/~abi070/Qt-Problem.html

Gruß
Volker

Verfasst: 6. November 2007 12:55
von preklov
Ich habe meine Frage auch an das englischsprachige Forum www.qtforum.org gepostet.

Volker

Verfasst: 27. November 2007 18:44
von preklov
Das Problem ist gelöst dank einem Workaround von Stian von Trolltech :D

Meinen herzlichen Dank an ihn.

Nur 1 Zeile zwischen move und exec:

....
move(x, y);
QMetaObject::invokeMethod(this, "repaint", Qt::QueuedConnection);
exec();
...

Ich bin sicher, dass ich das auch an anderer Stelle benötigen werde.

Vvolker