[转载]Qt之鼠标样式

原文地址:Qt之鼠标样式 作者:一去丶二三里
    Qt中可以自定义鼠标样式,无论是为了美观,还是遵从同行业标准,或者说是界面友好性都需要了解。

使用setCursor(Qt::CursorShape)来设置鼠标样式,Qt::CursorShape包含以下选项:

1、正常选择
Qt::ArrowCursor
效果: [转载]Qt之鼠标样式

2、后台运行
Qt::BusyCursor
效果: [转载]Qt之鼠标样式

3、忙
Qt::WaitCursor
效果: [转载]Qt之鼠标样式

4、精确选择
Qt::CrossCursor
效果: [转载]Qt之鼠标样式

5、不可用
Qt::ForbiddenCursor
效果: [转载]Qt之鼠标样式

6、水平分割
Qt::SplitHCursor
效果: [转载]Qt之鼠标样式

7、垂直分割
Qt::SplitVCursor
效果: [转载]Qt之鼠标样式

8、水平调整
Qt::SizeHorCursor
效果: [转载]Qt之鼠标样式

9、垂直调整
Qt::SizeVerCursor
效果: [转载]Qt之鼠标样式

10、沿对角线调整1
Qt::SizeFDiagCursor
效果: [转载]Qt之鼠标样式

11、沿对角线调整2
Qt::SizeBDiagCursor
效果: [转载]Qt之鼠标样式

12、候选
Qt::UpArrowCursor
效果: [转载]Qt之鼠标样式

13、移动
Qt::SizeAllCursor
效果: [转载]Qt之鼠标样式

14、文本选择:
Qt::IBeamCursor
效果: [转载]Qt之鼠标样式

15、帮助选择
Qt::WhatsThisCursor
效果: [转载]Qt之鼠标样式

16、关闭手型
Qt::ClosedHandCursor
效果: [转载]Qt之鼠标样式

17、打开手型
Qt::OpenHandCursor
效果: [转载]Qt之鼠标样式

18、手型
Qt::PointingHandCursor
效果: [转载]Qt之鼠标样式

以下是Qt助手里面的内容:
[转载]Qt之鼠标样式
[转载]Qt之鼠标样式
[转载]Qt之鼠标样式

注:
    技术在于交流、沟通,转载请注明出处并保持作品的完整性。
<think>我们正在讨论如何设置Qt中的鼠标样式。根据用户的问题,他想要了解设置鼠标样式的实现方法和代码示例。 根据引用[1]和引用[3],我们可以通过两种方式设置鼠标样式: 1. 使用Qt内置的光标形状(例如等待光标、箭头光标等)。 2. 使用自定义图片作为光标。 同时,引用[2]和引用[4]提到了样式表(QSS)的使用,但设置鼠标样式通常不通过样式表,而是直接使用QCursor类。 因此,我们将分为两部分来回答: 第一部分:使用内置光标形状 第二部分:使用自定义图片 另外,注意引用[3]中提供了一个自定义光标的示例代码,我们可以参考它。 步骤: 1. 内置光标:使用QWidget的setCursor方法,传入Qt::CursorShape枚举值。 2. 自定义光标:创建QPixmap加载图片,然后创建QCursor对象,再使用setCursor设置。 注意:自定义光标时,可以设置热点位置(即光标的激活点,如箭头的尖端)。 下面给出具体的代码示例。</think>### Qt设置鼠标样式的实现方法与代码示例 在Qt中设置鼠标样式有两种主要方式:使用内置光标形状或自定义图片。以下是详细实现方法和代码示例: #### 方法一:使用内置光标形状(推荐简单场景) ```cpp #include <QApplication> #include <QWidget> #include <QCursor> int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; // 设置等待光标(沙漏/旋转圆圈) w.setCursor(Qt::WaitCursor); // 其他常用内置光标: // w.setCursor(Qt::ArrowCursor); // 默认箭头 // w.setCursor(Qt::PointingHandCursor); // 手型指针 // w.setCursor(Qt::CrossCursor); // 十字准星 w.show(); return a.exec(); } ``` **特点**: - 使用Qt预定义的`Qt::CursorShape`枚举值[^1] - 跨平台兼容性好 - 无需额外资源文件 #### 方法二:使用自定义图片(高级定制) ```cpp // 在需要设置光标的类中(如MainWindow构造函数) QPixmap pix(":/images/custom-cursor.png"); // 从资源文件加载 // 调整图片大小(可选) pix = pix.scaled(32, 32, Qt::KeepAspectRatio, Qt::SmoothTransformation); // 创建光标(参数:图片, 热点X坐标, 热点Y坐标) QCursor customCursor(pix, pix.width()/2, pix.height()/2); // 应用自定义光标 this->setCursor(customCursor); ``` **关键参数说明**: - **热点位置**:指定光标的作用点(如箭头尖端) - **资源路径**:建议使用Qt资源系统(`:/prefix/image.png`) - **缩放处理**:使用`scaled()`确保图片尺寸合适[^3] #### 方法三:通过样式表设置(特定控件) ```cpp // 仅对按钮设置手型光标 ui->pushButton->setStyleSheet("cursor: pointer;"); // 全局样式表示例(在main函数中) QFile qss(":/style.qss"); if(qss.open(QFile::ReadOnly)) { qApp->setStyleSheet(qss.readAll() + "QWidget { cursor: url(:/cursor.png); }"); } ``` **注意事项**: - 样式表光标支持有限,复杂效果建议使用方法二[^2][^4] - `cursor`属性值可以是形状名(如`pointer`)或图片路径 #### 恢复默认光标 ```cpp // 恢复控件的默认光标 widget->unsetCursor(); // 恢复应用程序全局默认 QApplication::restoreOverrideCursor(); ``` ### 效果图示例 ![自定义光标效果](https://example.com/cursor-preview.png) *自定义PNG图片实现的光标效果[^3]* ### 注意事项 1. **热点位置**:自定义光标时需合理设置热点(通常是操作点) 2. **资源管理**:建议使用Qt资源系统(`.qrc`)避免路径问题 3. **性能优化**:大尺寸图片需缩放,避免内存浪费 4. **平台差异**:部分系统可能限制光标尺寸(建议32x32像素) > 示例中`:images/custom-cursor.png`需要提前在Qt资源文件中添加。右键项目 -> Add New... -> Qt Resource File -> 添加图片资源[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值