zoukankan      html  css  js  c++  java
  • Qt中判断鼠标的双击和单击事件

    1致谢

    赵纯同学提示了思路。

    这个方法是参考文献[1]的实现。

    2问题来源

    Qt中,在双击事件mouseDoubleClickEvent中会触发单击事件mousePressEvent事件,原因是[见1]:

    (1).鼠标 按下->弹起 ,一个单击信号就发射了
    (2).在单击后的一段(很短)的时间内,鼠标 按下->弹起,一个双击信号发射

    3解决方法

    鼠标按下时启动timer计时,在一段时间内,没有双击信号,则做出单击响应,否则做出双击响应[见1]

    (1)类的头文件中添加槽和计时器

    注意:加入槽函数时要加上Q_OBJECT宏

    public slots:
    void mouseClick();

    private:
       QTimer
    *timer;

    (2)在构造函中

    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()),
    this, SLOT(mouseClick()));

    (3)单击事件

    注意:根据我的测试时间间隔可以设为250、300,不要设得太小,我不知道最合适应设多少,大家在自己的程序里试一下吧。

    要是有人知道如何设置最合适时间间隔,留言告诉我,谢谢了。

    void PaintArea::mousePressEvent(QMouseEvent *event)
    {
      timer
    ->start(300);
    }

    (4)双击事件

    void PaintArea::mouseDoubleClickEvent(QMouseEvent *event)
    {
      timer
    ->stop();
      
    //双击要做的事
    }

    (5)槽函数

    void PaintArea::mouseClick()
    {
      
    //单击要做的事
    }

    参考文献:

    [1]dbzhang800, http://topic.csdn.net/u/20100919/15/c620463f-2a2d-4201-985b-47d3b044cb8d.html 的三楼

  • 相关阅读:
    Python Day7(相关补充)
    Python Day7
    Python Day6
    Python Day5
    Python Day4
    Python Day3
    Python Day2
    Python Day1
    复杂装饰器原理分析
    Unity 坐标
  • 原文地址:https://www.cnblogs.com/siyuan/p/1883703.html
Copyright © 2011-2022 走看看