[gelöst] wheelEvent kommt nicht an

Alles rund um die Programmierung mit Qt
Antworten
PoetikBiker
Beiträge: 41
Registriert: 2. Mai 2012 13:43

[gelöst] wheelEvent kommt nicht an

Beitrag von PoetikBiker »

Hallo zusammen,

ich habe unten stehende Klasse deklariert.
Die Methode showEvent wird aufgerufen, die Methode wheelEvent leider nicht.
Breakpoints in den jeweiligen Routinen bestätigen das.
Was bitte mache ich falsch?

Code: Alles auswählen

template <class QtClass, class qClass>
class QtWindow : public QtClass, public qClass
{
   public:
	QtWindow(QWidget	*_pParent = NULL);
		virtual ~QtWindow();

   protected:
	virtual void			showEvent(QShowEvent *_pEvent);
	virtual void 			wheelEvent(QWheelEvent *_pEvent);
}; // class QtWindow
Zuletzt geändert von PoetikBiker am 4. Mai 2012 10:49, insgesamt 1-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: wheelEvent kommt nicht an

Beitrag von franzf »

Ein kurzer Test sagt mir dass es geht.

Code: Alles auswählen

#include <QLabel>
#include <QApplication>
#include <QDebug>
#include <QWheelEvent>

template <class QtClass, class qClass>
class QtWindow : public QtClass, public qClass
{
   public:
   QtWindow(QWidget   *_pParent = NULL)
   : QtClass(_pParent)
   {}
    virtual ~QtWindow() {}

   protected:
   virtual void showEvent(QShowEvent *) {
       qDebug() << "Show";
   }
   virtual void wheelEvent(QWheelEvent *_pEvent) {
       qDebug() << "wheel";
       _pEvent->ignore();
   }
}; // class QtWindow

struct empty {};

int main( int argc, char** argv ) {
    QApplication app(argc, argv);
    QtWindow<QLabel, empty> lbl;
    lbl.show();
    return app.exec();
}
Mit welchen Typen instantiierst du das template? Kannst du es vllt. auch mal mit einem simplen qDebug() im wheelEvent versuchen? Nicht dass du den Breakpoint falsch gesetzt hast ;)
Es kann aber auch sein, dass der Debugger zickt (eher unwahrscheinlich).

Und noch eine kleine Warnung:
http://doc.qt.nokia.com/4.5/moc.html#limitations
Sobald du also in dein Klassentemplate SIGANLS/SLOTS einbaust, werden die nicht funktionieren.
PoetikBiker
Beiträge: 41
Registriert: 2. Mai 2012 13:43

Re: wheelEvent kommt nicht an

Beitrag von PoetikBiker »

franzf hat geschrieben: Mit welchen Typen instantiierst du das template
mit QGLWidget und einem weiteren Windows-Interface, aber daran liegt es nicht - siehe unten...
franzf hat geschrieben: Es kann aber auch sein, dass der Debugger zickt (eher unwahrscheinlich).
Das kommt schon mal vor, ich benutze MinGW mit gdb (im Moment, aber auch Eclipse und g++ und gdb unter Linux, da gibt es weniger Probleme), aber daran liegt es ebenfalls nicht - siehe unten...

Das Problem lag aber diesmal beim Compiler (bzw. in der Entwicklungsumgebung). Ich habe ein kompletten Rebuild erzwungen, indem ich alle *.o Dateien und ähnliche vom Filesystem gelöscht habe. Jetzt geht es!

Danke für die Hilfe!
Antworten