Qt 鼠标事件

头文件

#pragma once

#include <QWidget>
#include "ui_QtWidgetsClass.h"

class QtWidgetsClass : public QWidget
{
	Q_OBJECT

public:
	QtWidgetsClass(QWidget* parent = Q_NULLPTR);
	~QtWidgetsClass();
	//重写五个 virtual protect 函数 使用鼠标事件
	virtual void mousePressEvent(QMouseEvent *event) override;
	virtual void mouseReleaseEvent(QMouseEvent *event) override;
	virtual void mouseDoubleClickEvent(QMouseEvent *event) override;
	virtual void mouseMoveEvent(QMouseEvent *event) override;
	virtual void leaveEvent(QEvent *event) override;
	virtual void enterEvent(QEvent *event) override;


private:
	Ui::QtWidgetsClass ui;
};

源文件

#include "QtWidgetsClass.h"
#include <QDebug>
#include <QMouseEvent>

QtWidgetsClass::QtWidgetsClass(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
	
	connect(ui.spinBox, static_cast<void (QSpinBox:: *)(int)>(&QSpinBox::valueChanged), ui.verticalSlider, &QSlider::setValue);
	connect(ui.verticalSlider, &QSlider::valueChanged, ui.spinBox, &QSpinBox::setValue);
	
	//设置鼠标追踪,当鼠标进入控件,不需按压左右键,将执行该部件重写的void mouseMoveEvent(QMouseEvent * event)函数
	setMouseTracking(true);
}

QtWidgetsClass::~QtWidgetsClass()
{
}

//鼠标按压事件
void QtWidgetsClass::mousePressEvent(QMouseEvent * event)
{
	if (event->button() == Qt::LeftButton)
	{
		QString str = QString("x:%1 y:%2 gx:%3 gy:%4").arg(event->x()).arg(event->y()).arg(event->globalX()).arg(event->globalY());
		qDebug() << "mouse press " << str<<" \n" ;
	}
}

//鼠标释放事件
void QtWidgetsClass::mouseReleaseEvent(QMouseEvent * event)
{
	if (event->button() == Qt::LeftButton)
	{
		QString str = QString("x:%1 y:%2 gx:%3 gy:%4").arg(event->x()).arg(event->y()).arg(event->globalX()).arg(event->globalY());
		qDebug() << "mouse release " << str << " \n";
	}
}

//双击事件
void QtWidgetsClass::mouseDoubleClickEvent(QMouseEvent * event)
{
	if (event->button() == Qt::LeftButton)
	{
		QString str = QString("x:%1 y:%2 gx:%3 gy:%4").arg(event->x()).arg(event->y()).arg(event->globalX()).arg(event->globalY());
		qDebug() << "mouse double clicked " << str << " \n";
	}
}

//移动事件
void QtWidgetsClass::mouseMoveEvent(QMouseEvent * event)
{
	QString str = QString("x:%1 y:%2 gx:%3 gy:%4").arg(event->x()).arg(event->y()).arg(event->globalX()).arg(event->globalY());

	if (event->buttons() & Qt::LeftButton || event->buttons() & Qt::RightButton)
	{
		qDebug() << "mouse is moving " << str << " \n";
	}
	qDebug() << "mouse is moving " << str << " \n";
}

//鼠标离开事件
void QtWidgetsClass::leaveEvent(QEvent * event)
{
	qDebug() << "mouse is leaved"  << " \n";
}

//鼠标进入事件
void QtWidgetsClass::enterEvent(QEvent * event)
{
	qDebug() << "mouse is entering" << " \n";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值