1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > qt 实现 区分鼠标单击 双击事件

qt 实现 区分鼠标单击 双击事件

时间:2022-02-02 12:34:39

相关推荐

qt 实现 区分鼠标单击 双击事件

qt 只实现了鼠标左键的双击事件,同时会触发mousePressEvent事件,那么怎么区分鼠标的单击,双击呢??进入正题,请见以下源码,或者下载资源:/detail/shaosheng/9823796

/**************************************/

//头文件: double_single_clicked.h

/*************************************/

#ifndef DOUBLE_SINGLE_CLICKED_H

#define DOUBLE_SINGLE_CLICKED_H

#include <QtWidgets/QWidget>

class QTimer;

class QLabel;

class DoubleSingleClicked : public QWidget

{

Q_OBJECT

public:

DoubleSingleClicked(QWidget *parent = 0);

~DoubleSingleClicked();

protected:

void mouseDoubleClickEvent(QMouseEvent *e);

void mousePressEvent(QMouseEvent *);

private slots:

void slotSingleClicked();

private:

QTimer *m_clickedTimer = nullptr;

QLabel *m_label = nullptr;

};

#endif // DOUBLE_SINGLE_CLICKED_H

/***********************************************************************************************************/

//.cpp文件:double_single_clicked.cpp

/**********************************************************************************************************/

#include "double_single_clicked.h"

#include <QTimer>

#include <QLabel>

#include <QMouseEvent>

DoubleSingleClicked::DoubleSingleClicked(QWidget *parent)

: QWidget(parent)

{

setFixedSize(600, 400);

m_label = new QLabel(this);

m_label->move(15, 50);

m_label->setText(QStringLiteral("区分鼠标单击,双击事件!"));

m_clickedTimer = new QTimer(this);

connect(m_clickedTimer, SIGNAL(timeout()), this, SLOT(slotSingleClicked()));

}

DoubleSingleClicked::~DoubleSingleClicked()

{

}

void DoubleSingleClicked::mouseDoubleClickEvent(QMouseEvent *e)

{

if (m_clickedTimer->isActive())

m_clickedTimer->stop();

m_label->setText(QStringLiteral("鼠标双击!!"));

}

void DoubleSingleClicked::mousePressEvent(QMouseEvent *e)

{

if (Qt::LeftButton == e->button())

{

m_clickedTimer->start(300);

}

}

void DoubleSingleClicked::slotSingleClicked()

{

m_label->setText(QStringLiteral("鼠标单击!!"));

if (m_clickedTimer->isActive())

m_clickedTimer->stop();

}

欢迎加入Q群(565993954)进行技术交流、讨论!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。