application.h
#ifndef APPLICATION_H
#define APPLICATION_H
#include <QApplication>
#include <QMouseEvent>
#include <QTouchEvent>
#include <QDebug>
class Application : public QApplication
{
Q_OBJECT
public:
Application(int &argc, char **argv) : QApplication(argc, argv) {}
bool notify(QObject *obj, QEvent *e) override
{
switch (e->type()) {
case QEvent::TouchBegin:
case QEvent::TouchEnd:
case QEvent::TouchUpdate:
case QEvent::TouchCancel:
{
QTouchEvent *touchEvent = reinterpret_cast<QTouchEvent *>(e);
QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
foreach(QTouchEvent::TouchPoint t, touchPoints) {
// qDebug() << "###TP" << t;
}
break;
}
default:
break;
}
if (e->type() == QEvent::MouseButtonPress || e->type() == QEvent::TouchBegin) {
emit userOperated();
}
return QApplication::notify(obj, e);
}
template <typename ... Args>
QMetaObject::Connection callOnUserOperated(Args && ...args)
{
return QObject::connect(this, &Application::userOperated, std::forward<Args>(args)... );
}
Q_SIGNALS:
void userOperated();
};
#endif // APPLICATION_H
main.cpp
#include "application.h"
int main(int argc, char *argv[])
{
Application a(argc, argv);
return a.exec();
}