【发布时间】:2015-05-27 02:36:30
【问题描述】:
我已阅读此How to distinguish between mouseReleaseEvent and mousedoubleClickEvent on QGrapnhicsScene 和此Distinguish between single and double click events in Qt 以解决我的问题。但它们不起作用。我创建了一个类 QLabel:
鼠标标签.h
#ifndef MOUSELABEL_H
#define MOUSELABEL_H
#include <QLabel>
#include <QMouseEvent>
#include <QEvent>
#include <QDebug>
class MouseLabel : public QLabel
{
Q_OBJECT
public:
explicit MouseLabel(QWidget *parent = 0);
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseDoubleClickEvent(QMouseEvent *event);
void leaveEvent(QMouseEvent *);
int x, y;
signals:
void Mouse_Pressed();
void Mouse_Position();
void Mouse_Left();
void Mouse_Release();
void Mouse_DoubleClick();
public slots:
};
#endif // MOUSELABEL_H
鼠标标签.cpp
#include "mouselabel.h"
MouseLabel::MouseLabel(QWidget *parent) :
QLabel(parent)
{
}
void MouseLabel::mouseMoveEvent(QMouseEvent *event) {
this->x = event->x();
this->y = event->y();
emit Mouse_Position();
}
void MouseLabel::mousePressEvent(QMouseEvent *event)
{
emit Mouse_Pressed();
}
void MouseLabel::mouseReleaseEvent(QMouseEvent *event)
{
emit Mouse_Release();
}
void MouseLabel::mouseDoubleClickEvent(QMouseEvent *event)
{
emit Mouse_DoubleClick();
}
void MouseLabel::leaveEvent(QMouseEvent *)
{
emit Mouse_Left();
}
如两个链接中所述,为了区分单击和双击,我创建了一个计时器,它在鼠标释放事件发生时启动,在鼠标双击时停止。但是,这不起作用。你能帮我解决这个问题吗?
【问题讨论】:
-
我会调查为什么支持的解决方案对您不起作用,而不是重新发明您自己的解决方案。