双击时不运行单击事件

来源:互联网 发布:关于软件开发的 编辑:程序博客网 时间:2024/05/21 07:49

思路很简单,就是加一个延时,判断在特定时间内是否有第二个鼠标事件


//tqt.h#ifndef TQT_H_#define TQT_H_#include <QtGui>#include <QtCore>class ClickedLabel : public QLabel{Q_OBJECTprivate:int press;//QTimer *timer;protected:void mousePressEvent(QMouseEvent *event);public:ClickedLabel(QLabel *parent = 0);~ClickedLabel();private slots:void SingleClicked();};#endif#include "tqt.h"ClickedLabel::ClickedLabel(QLabel *parent /* = 0 */): QLabel(parent){press = 0;setText("Please Click ME~~~");resize(200, 200);}ClickedLabel::~ClickedLabel(){}void ClickedLabel::mousePressEvent(QMouseEvent *event){press++;if(1 == press)QTimer::singleShot(300, this, SLOT(SingleClicked()));}void ClickedLabel::SingleClicked(){if(1 == press)QMessageBox::information(this, tr("OK"), tr("Signal Clicked"));elseQMessageBox::information(this, tr("OK"), tr("Double Clicked"));press = 0;}//main.cpp#include "tqt.h"int main(int argc, char **argv){QApplication app(argc, argv);ClickedLabel *label = new ClickedLabel;label->show();return app.exec();}


原创粉丝点击