Qt事件——鼠标事件

通过label来显示各种事件

鼠标按下事件

cpp 复制代码
//按下显示坐标
void MyLabel::mousePressEvent(QMouseEvent * ev)
{
	int i = ev->x();
	int j = ev->y();

	//判断按下的鼠标键位
	if (ev->button() == Qt::LeftButton) {
		qDebug() << "LeftButton";
	}
	else if (ev->button() == Qt::RightButton) {
		qDebug() << "RightButton";
	}
	else if (ev->button() == Qt::MidButton)
	{
		qDebug() << "MidButton";
	}

	QString text = QString("<center><h1>Mouse Press:(%1,%2)</center></h1>").arg(i).arg(j);
	this->setText(text);
}


鼠标抬起事件

cpp 复制代码
//鼠标抬起
void MyLabel::mouseReleaseEvent(QMouseEvent* ev)
{
	QString text = QString("<center><h1>Mouse Release:(%1,%2)</center></h1>").arg(ev->x()).arg(ev->y());
	this->setText(text);
}

鼠标移动事件

cpp 复制代码
//鼠标移动,不设置this->setMouseTracking(true);需要按下后移动才有效
void MyLabel::mouseMoveEvent(QMouseEvent* ev)
{
	QString text = QString("<center><h1>Mouse Move:(%1,%2)</center></h1>").arg(ev->x()).arg(ev->y());
	this->setText(text);
}
cpp 复制代码
#include "MyLabel.h"
#include <QMouseEvent>
#include <QDebug>

MyLabel::MyLabel(QWidget *parent)
	: QLabel(parent)
{
	//设置默认追踪鼠标,就可以不先点击就触发移动事件
	this->setMouseTracking(true);
}

MyLabel::~MyLabel()
{}

//按下显示坐标
void MyLabel::mousePressEvent(QMouseEvent * ev)
{
	int i = ev->x();
	int j = ev->y();

	//判断按下的鼠标键位
	if (ev->button() == Qt::LeftButton) {
		qDebug() << "LeftButton";
	}
	else if (ev->button() == Qt::RightButton) {
		qDebug() << "RightButton";
	}
	else if (ev->button() == Qt::MidButton)
	{
		qDebug() << "MidButton";
	}

	QString text = QString("<center><h1>Mouse Press:(%1,%2)</center></h1>").arg(i).arg(j);
	this->setText(text);
}

//鼠标抬起
void MyLabel::mouseReleaseEvent(QMouseEvent* ev)
{
	QString text = QString("<center><h1>Mouse Release:(%1,%2)</center></h1>").arg(ev->x()).arg(ev->y());
	this->setText(text);
}

//鼠标移动,不设置this->setMouseTracking(true);需要按下后移动才有效
void MyLabel::mouseMoveEvent(QMouseEvent* ev)
{
	QString text = QString("<center><h1>Mouse Move:(%1,%2)</center></h1>").arg(ev->x()).arg(ev->y());
	this->setText(text);
}
相关推荐
布茹 ei ai8 分钟前
QtWeatherApp - 简单天气预报软件(C++ Qt6)(附源码)
开发语言·c++·qt·开源·开源项目·天气预报
奇树谦43 分钟前
Qt QDockWidget 深度解析:从基础使用到可保存布局的工程级主界面
开发语言·qt
不会c嘎嘎2 小时前
初识QT -- 第一个QT程序
开发语言·qt
深蓝海拓3 小时前
PySide6从0开始学习的笔记(八) 控件(Widget)之QSlider(滑动条)
笔记·python·qt·学习·pyqt
charlee444 小时前
为什么协程能让程序不再卡顿?——从同步、异步到 C++ 实战
qt·协程·异步编程·gui卡顿·boost.coroutine2
YY&DS4 小时前
《Qt 手写 HTTP 登录服务实战》
开发语言·qt·http
木千4 小时前
Qt中关于QLineEdit控件的editingFinished信号执行两次的处理方式
开发语言·qt
木千5 小时前
Qt中关于QTableWidget成员函数selectedItems和itemAt(QPoint)无法获取无数据Item的处理方式
开发语言·qt
神仙别闹14 小时前
基于QT(C++)实现学本科教务系统(URP系统)
数据库·c++·qt
谁动了我的代码?16 小时前
QT<34> 利用线程池处理耗时任务以及回调函数的使用
开发语言·qt