请考虑以下代码:
#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/