Qt中判断鼠标的双击和单击事件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Qt中判断鼠标的双击和单击事件(转载)
1致谢
2问题来源
Qt中,在双击事件mouseDoubleClickEvent中会触发单击事件mousePressEvent 事件,原因是:
(1).鼠标按下->弹起,一个单击信号就发射了
(2).在单击后的一段(很短)的时间内,鼠标按下->弹起,一个双击信号发射
3解决方法
鼠标按下时启动timer计时,在一段时间内,没有双击信号,则做出单击响应,否则做出双击响应
(1)类的头文件中添加槽和计时器
注意:加入槽函数时要加上Q_OBJECT宏
public slots:
void mouseClick();
private:
QTimer *timer;
(2)在构造函中
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(mouseClick()));
(3)单击事件
注意:根据我的测试时间间隔最小设为200,再小就不行了,不知道为什么,求解void PaintArea::mousePressEvent(QMouseEvent *event)
{
timer->start(200);
}
(4)双击事件
void PaintArea::mouseDoubleClickEvent(QMouseEvent *event)
{
timer->stop();//禁止单击要做的事
//双击要做的事
}
(5)槽函数
void PaintArea::mouseClick()
{
//单击要做的事}