• 10652阅读
  • 2回复

Qt怎么在QWidget上响应触摸屏事件 [复制链接]

上一主题 下一主题
离线aisq2008
 

只看楼主 倒序阅读 楼主  发表于: 2013-10-23
           我想直接在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);
}
离线XChinux

只看该作者 1楼 发表于: 2013-10-23
没做过这个啊,爱莫能助
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线hyh0lh

只看该作者 2楼 发表于: 2013-10-28
你确定你有发出触屏事件吗?你对硬件的触屏进行了测试没有?另外,对于QWidget,添加属性后会自动将touchEvent转换为mouseEvent。只有特殊的地方的才需要直接识别touchEvent。
快速回复
限100 字节
 
上一个 下一个