[Qt学习笔记]Qt实现鼠标点击或移动时改变鼠标的样式以及自定义鼠标样式

1、鼠标样式介绍以及对应函数

在Qt中大概有20种左右的内置鼠标样式,一般使用setCursor(Qt::CursorShape shape)来进行设置,一般常用的有标准箭头、手型,双箭头等等形状,对于不同的操作系统下,鼠标的样式显示会略有差别,Qt内置的鼠标样式(CursorShape)如下:

2、在鼠标事件中调用鼠标样式设置函数

复制代码
 this->setMouseTracking(true);      //设置为不按下鼠标键触发moveEvent
 void mouseMoveEvent(QMouseEvent* event)
 {
     QPoint mousepos = event()->pos();
 
     //在坐标(0 ~ width,0 ~ height)范围内改变鼠标形状
     if(mousepos.rx() > 0 
        && mousepos.rx() < width
        && mousepos.ry() > 0
        && mousepos.ry() < height)
     {
            this->setCursor(Qt::CrossCursor);
     }
     else
     {
         this->setCursor(Qt::ArrowCursor);      //范围之外变回原来形状
     }
 }

这里通过setMouseTracking(true);这个函数来进行鼠标的跟随操作,当鼠标移动事件触发后判断进行鼠标样式的更改。

3、使用图片自定义鼠标样式

使用函数QCursor::QCursor(const QBitmap & bitmap, const QBitmap & mask, int hotX = -1, int hotY = -1),需要准备自定义鼠标样式的图片和自定义鼠标样式的掩码图片,hotX和hotY设置鼠标热点。甚至可以生成与背景具有反差效果的鼠标样式。该函数详细使用说明如下:

复制代码
CustomCursor::CustomCursor(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	QBitmap bitmap("bitmap.png"); //背景透明的png格式图片
	QBitmap bitmap_mask("bitmap_mask.png");

	QCursor cursor(bitmap, bitmap_mask, -1, -1); //-1 -1表示鼠标热点在中心点
	setCursor(cursor); //设置自定义的鼠标样式
}
相关推荐
苕皮蓝牙土豆12 小时前
Qt图形视图框架入门:坐标系统与鼠标事件处理详解
c++·qt
纤纡.13 小时前
基于 PyQt5 的桌面应用开发实战:登录、预测、计算器、摄像头多功能系统
开发语言·人工智能·qt·计算机视觉
Fleshy数模15 小时前
PyQt5 登录界面开发全流程:从环境配置到可视化设计
开发语言·python·qt
用户8055336980317 小时前
现代Qt开发教程(新手篇)1.6——内存管理
c++·qt
m0_5027249518 小时前
qt键盘钩子完善
stm32·qt·计算机外设
广州灵眸科技有限公司18 小时前
瑞芯微(EASY EAI)RV1126B QT GUI例程方案
linux·服务器·开发语言·网络·人工智能·qt·物联网
xcjbqd019 小时前
Qt Quick中QML与C++交互详解及场景切换实现
c++·qt·交互
小樱花的樱花19 小时前
5 实现文件打开功能
开发语言·数据库·c++·qt·ui
Drone_xjw1 天前
一次 Qt 程序在 Kylin 系统下表头“白屏”的排查之旅
qt·kylin·一次
尘中远2 天前
Qwt 7.0 新特性介绍 — 更现代、更强大的Qt数据可视化库
qt·qwt·科学绘图·曲线图