其他分享
首页 > 其他分享> > Qt 触控屏中单点手势的实现

Qt 触控屏中单点手势的实现

作者:互联网

单点触控Qt会将其转化为鼠标事件,实现如下

https://www.dazhuanlan.com/mrwhooo/topics/1240549

https://github.com/digifant/multidisplay-app/blob/b0921e1b0f0c728c58427029374bef072d0c4382/src/mobile/SwipeGestureRecognizer.h

但使用时发现,如果对象本身需要销毁,则重新初始化对象时可能导致构造函数中的 QGestureRecognizer::registerRecognizer 的多次重复注册,进而引发崩溃,

崩溃堆栈3个“??”,查了一下午,析构时反注册即可。

头文件:

class GraphicsView : public QGraphicsView
{
    Q_OBJECT
public:
    GraphicsView(QWidget* parent = nullptr);
    ~GraphicsView() override;
private:
    SwipeGestureRecognizer gesRecognizer_;
    Qt::GestureType gesType_;
}

 

实现:

GraphicsView::GraphicsView(QWidget* parent) : QGraphicsView (parent) {
    gesType_ = QGestureRecognizer::registerRecognizer(&gesRecognizer_);
    grabGesture(gesType_);
}


GraphicsView::~GraphicsView() {
    QGestureRecognizer::unregisterRecognizer(gesType_);
    ungrabGesture(gesType_);
}

 

标签:屏中,Qt,parent,GraphicsView,gesType,gesRecognizer,QGestureRecognizer,触控
来源: https://www.cnblogs.com/Paoyao/p/15673548.html