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);
}
相关推荐
尘中远1 小时前
【Qwt 7.0 系列】快速入门与核心新特性概览 —— 更现代的 Qt 数据可视化库
qt·数据可视化·绘图·qwt·科学绘图
初阳7853 小时前
【Qt】系统相关(3)——多线程
qt
初阳7856 小时前
【Qt】系统相关(2)——文件
开发语言·qt
尘中远20 小时前
【Qwt 7.0 系列】坐标轴与刻度系统 —— 刻度引擎、网格、图例与刻度朝内
qt·数据可视化·qcustomplot·qwt·工业软件·科学绘图
sycmancia1 天前
Qt——多线程间的互斥
开发语言·qt
尘中远1 天前
【Qwt 7.0 系列】常用图表类型实战 —— 柱状图、散点图、箱线图与直方图
qt·qwt·工业软件·科学绘图
尘中远1 天前
【Qwt 7.0 系列】交互功能详解 —— 平移、缩放、坐标轴交互与数据拾取
qt·数据可视化·绘图·qcustomplot·qwt·科学绘图
sycmancia1 天前
Qt——进程与线程的概念
qt
郝学胜-神的一滴1 天前
Qt 高级编程 034:深耕QWidget底层内核—彻底吃透无边框窗口设计核心原理
开发语言·c++·qt·程序人生·软件开发·用户界面
尘中远1 天前
【Qwt 7.0 系列】3D 数据可视化 —— OpenGL 高性能三维绘图
qt·3d·qcustomplot·qwt·科学绘图·高性能绘图