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);
}
相关推荐
超龄编码人6 小时前
Qt Widgets Designer QTabWidget无法添加布局
开发语言·qt
vegetablesssss6 小时前
vtk镜像图
c++·qt·vtk
Ulyanov9 小时前
基于 Python 的三维动态导弹攻防演示系统设计与实现:从架构到实战的深度剖析
开发语言·python·qt·架构·雷达电子对抗
小短腿的代码世界10 小时前
Qt WebEngine深度解析:Chromium多进程架构与Qt信号槽的双向融合
qt·搜索引擎·单元测试
charlie11451419111 小时前
现代Qt开发教程(新手篇)1.10——进程
开发语言·c++·qt·学习
小短腿的代码世界12 小时前
Qt量化策略编辑器深度解析:从DSL解析到可视化编排的完整架构
qt·架构·编辑器
十五年专注C++开发12 小时前
Qt实现带多选功能的组合复选框
开发语言·c++·qt·qcombobox
柳鲲鹏12 小时前
QT:正确延时调用,Cannot create children for a parent that is in a different thread.
服务器·数据库·qt
(Charon)12 小时前
【C++/Qt】Qt 实现 WebSocket 测试工具:连接、消息收发与通信日志
c++·qt·websocket
十五年专注C++开发12 小时前
CMake基础: Qt之qt5_wrap_ui
开发语言·c++·qt·ui