Seite 1 von 1

QCanvas::update() funktioniert nicht

Verfasst: 16. August 2009 21:29
von linuQs
Hallo erstmal (hab mich gerade erst angemeldet). Und natürlich gibts direkt ein Problem zu lösen :D

Das Problem: Bei einmaligem aufrufen von mycanvas.update() (auch wenn ich vorher mycanvas.setAllChanged() aufrufe) passiert nichts.

An der Stelle wo der Fehler auftritt wird eine Schleife durchlaufen, die so lange ausgeführt wird, bis ein Skript abgearbeitet wurde. Jede Zeile im Skript stellt einnen Befehl dar. Wenn der Befehl z.B. ducken heißt, wird ein neues Bild geladen, also z.B.

Code: Alles auswählen

playeritem -> changePicture( loadPicture ( "ducken.png" ) );
playeritem ist ein QCanvasRectangle, dass ein QImage anzeigt (drawShap ist vorhanden). danach soll das QCanvas das Bild auch anzeigen, also

Code: Alles auswählen

mycanvas.setAllChanged();
mycanvas.update();
Das Problem ist nun, dass das update() offenbar nicht funktioniert, jedenfalls wird immer erst der nächste Skript Befehl ausgeführt, z.B. sleep 1000 und erst nach der Wartezeit wird dann das Bild angezeigt.

Außerdem habe ich herausgefunden, dass es funktioniert, wenn man 5 mal hintereinander setAllChanged(); update(); aufruft... Bevor ich so was verwende, wollte ich mal wissen, ob es vielleicht auch anders geht :wink:

Hat jemand eine Idee oder einen Hinweis wo das Problem liegt?

Verfasst: 16. August 2009 21:35
von upsala
Wäre es nicht langsam mal an der Zeit auf Qt4 umzusteigen?

Verfasst: 16. August 2009 21:49
von linuQs
Daran habe ich auch schon gedacht, aber ich benutze KDE und mir gefällt KDE3 nach wie vor besser als KDE4. Falls keiner eine Lösung weiß werde ich das Projekt vielleicht portieren, hab aber bisher nur mit Qt3 gearbeitet.

EDIT: @upsala: Welches Programm würdest du denn für Qt4 (unter KDE) Programmierung empfehlen? Ich habe bisher immer Kdvelop3 genutzt, der hat aber kein gutes Qt4 Template. Qt Creator hab ich mir auch schon angeguckt, aber mir wäre eine IDE lieber, mit der man auch KDE Programmen schreiben kann.