Seite 1 von 1
[gelöst] wheelEvent kommt nicht an
Verfasst: 4. Mai 2012 10:07
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
Re: wheelEvent kommt nicht an
Verfasst: 4. Mai 2012 10:26
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.
Re: wheelEvent kommt nicht an
Verfasst: 4. Mai 2012 10:48
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!