QPainterEvent
QPainterEvent
Hallo alle zusammen!
Ich habe gerade eine kleine Klasse geschrieben, die QPaintEvent benutzen soll.
Aber leider beim Aufrufen von update() oder repaint(true) meine Methode
paintEvent(QPaintEvent* e) wird nicht aufgerufen... (ich habe durchdebuggt)
Woran kann das liegen?
Vielleicht hat jemand dieses Problem gehabt?
Danke!
Ich habe gerade eine kleine Klasse geschrieben, die QPaintEvent benutzen soll.
Aber leider beim Aufrufen von update() oder repaint(true) meine Methode
paintEvent(QPaintEvent* e) wird nicht aufgerufen... (ich habe durchdebuggt)
Woran kann das liegen?
Vielleicht hat jemand dieses Problem gehabt?
Danke!
-
- Beiträge: 40
- Registriert: 4. Oktober 2004 16:26
Punkt 1 - In der Klassendefinition deines Widgets steht dein "void paintEvent(QPaintEvent* e)" nicht unter private? (also paintEvent wird ueberhaupt nie aufgerufen, oder nur nach deinem update nicht?)
Punkt 2 - Wie willst du ueberpruefen, dass dein paintEvent nicht aufgerufen wird? ...oder besser, wie versuchst du das gerade zu ueberpruefen? Ich halte so eine Ueberpruefung naemlich nicht fuer trivial.
Goos
Punkt 2 - Wie willst du ueberpruefen, dass dein paintEvent nicht aufgerufen wird? ...oder besser, wie versuchst du das gerade zu ueberpruefen? Ich halte so eine Ueberpruefung naemlich nicht fuer trivial.
Goos
Ok, vielleicht nicht toll ausgedrueckt, aber es heisst schliesslich paintEVENT ....und ich meinte wohl, wie er ueberpruefen will, dass der Aufruf gerade von seinem update() bzw repaint() kommt. Ganz allgemein zu pruefen, ob der Debugger 99,9% seiner Zeit im paintEvent haengt, das is natuerlich kein problem
Goos
Goos
Ja, das ist tatsächlich etwas ungbequem, geht aber, in dem man zuerst in dem Debugger zu dem eigenen update()-Aufruf springt, alle Fenster der Anwendung, die man grade debuggt,durch das Fenster von dem Debugger verdeckt und dann im Debugger einen Schritt weiter geht.
Springt man dann in painEvent() ein, handelt es sich eindeutig um den richtigen paintEvent() Aufruf. So mache ich das jedenfalls mit VS 6.0 unter windoz.
Springt man dann in painEvent() ein, handelt es sich eindeutig um den richtigen paintEvent() Aufruf. So mache ich das jedenfalls mit VS 6.0 unter windoz.
danke, funktioniert tatsächlich !
aber ich habe jetzt das andere Problem...
QPixmap* pix = new QPixmap("anima.png");
bitBlt(this,0,0,pix,0,0,800,480,CopyROP);
in mein Widget wird kein Pixmap gezeichnet?!
Wenn ich ein Bild mit QLabel erstelle (label->setPixmap(pix)), dann kommt es raus, anderes mit bitBlt nicht?! Aber ich brauche unbedingt DoppelBuffering...
Vielleicht hast Du eine Idee?!
Vielen Dank!
aber ich habe jetzt das andere Problem...
QPixmap* pix = new QPixmap("anima.png");
bitBlt(this,0,0,pix,0,0,800,480,CopyROP);
in mein Widget wird kein Pixmap gezeichnet?!
Wenn ich ein Bild mit QLabel erstelle (label->setPixmap(pix)), dann kommt es raus, anderes mit bitBlt nicht?! Aber ich brauche unbedingt DoppelBuffering...
Vielleicht hast Du eine Idee?!
Vielen Dank!