我想直接在QWidget或QMainwindow类上响应触摸屏事件,但是我按照Qt的例子,Qt在Example/touch里面的例子,
设置了 setAttribute(Qt::WA_AcceptTouchEvents);属性,然后重载了bool event(QEvent *event);函数,函数里面没有收到事件响应。具体的源代码如下所示:
mainwindow.h文件
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
bool event(QEvent *event);
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
mainwindow.cpp文件
#include <QTouchEvent>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
setAttribute(Qt::WA_AcceptTouchEvents);
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
bool MainWindow::event(QEvent *event)
{
switch (event->type())
{
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
{
QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
QString txt = tr("Cnt: %1");
ui->textEdit->append(txt);
return true;
}
default:
break;
}
return QMainWindow::event(event);
}