[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); //设置自定义的鼠标样式
}
相关推荐
kaixin_learn_qt_ing2 小时前
【银河麒麟下】 安装达梦数据库 + 使用Qt访问达梦数据库
qt
mengzhi啊2 小时前
缓存类CacheDataManager把临时数据存入json。做成插件·
qt·缓存·json
尘客-追梦3 小时前
Day 01:插件化之前,先看清 ABI 这堵墙
开发语言·c++·qt
Quz6 小时前
QML SwipeView:实现一个简单的图片浏览器
qt
Quz6 小时前
QML SwipeView:标签导航 与 Loader 懒加载
qt
神仙别闹10 小时前
基于 QT(C++)开发的地铁换乘系统
数据库·c++·qt
C++ 老炮儿的技术栈13 小时前
西门子 S7 常用存储区(I/Q/M/T/C/DB/PI/PQ)
linux·开发语言·c++·windows·qt·io
j7~16 小时前
【Qt】(篇二)《信号与槽:信号和槽的概述,使用、自定义信号和槽、信号与槽的连接方式、信号和槽的其他说明》---详解
qt·信号·qt5·信号与槽··qt creater
Littlehero_1211 天前
QT自定义控件之电气接线图(源码开源)
开发语言·qt
qq762118221 天前
Ubuntu22.04 Qt 调用shell 脚本启动程序,GLFW 初始化失败
qt