c++ - 为什么总是在 mouseDoubleClickEvent 之前调用 mousePressEvent

标签 c++ qt events double-click mousepress

请考虑以下代码:

#include <QWidget>
#include <iostream>
#include <QApplication>

class Widget : public QWidget
{
public:
    void mousePressEvent(QMouseEvent* event)
    {
        std::cout << "mousePressEvent" < std::endl;
    }

    void mouseDoubleClickEvent(QMouseEvent* event)
    {
        std::cout << "mouseDoubleClickEvent" << std::endl;
    }
};

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    Widget w;
    w.show();
    return app.exec();
}

每次处理双击时,输出为:

mousePressEvent
mouseDoubleClickEvent

这意味着 Qt 总是在按下一次后立即调用 mousePressEvent,而无需等待第二次按下。有没有办法关闭此选项,以便在双击时不会执行 mousePressEvent 调用。

最佳答案

我将在等于QApplication::doubleClickInterval()值的时间段内绕过单击事件的处理(使用QTimer)。如果在那段时间没有发生双击,我应该处理“单击”,否则应该处理双击。

关于c++ - 为什么总是在 mouseDoubleClickEvent 之前调用 mousePressEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30262727/

相关文章:

Python Tkinter 列表框 : fire off a function on change?

php - 在 php 扩展中添加两个共享库。 WHO?

c++ - 用于执行稀疏线性代数的应用程序的 Python 与 C++

c++ - C++ 成员名称查找和访问声明中的歧义

c++ - Qt:捕获图像而不保存 - QCameraImageCapture

javascript - 将事件从 iframe 传递到父级

javascript - 从元素中删除特定的 jQuery 单击事件

c++ - 如何最好地将 BCD 作为一项练习来实现?

c++ - 将 Armadillo 添加到 Qt 项目

qt - 我们可以让 QTableWidget 平滑滚动其内容吗?