当前位置: 首页 > ops >正文

PySide6 GUI 学习笔记——常用类及控件使用方法(光标类图标QCursor)

文章目录

    • 常用方法表格
    • QCursor类标准光标形状
    • Python 应用示例
    • 关键特性说明
    • 注意事项

作用

QCursor 类用于管理鼠标光标形状与位置。支持预定义光标、自定义位图/掩码光标,并提供全局光标位置控制。

常用方法表格

方法/构造函数参数说明返回类型功能描述
QCursor()--创建默认箭头光标
QCursor(Qt.CursorShape)预定义形状(如 Qt.ArrowCursor)-创建指定形状光标
QCursor(QPixmap, hotX=-1, hotY=-1)位图、热点坐标(默认居中)-创建自定义位图光标
pos()-QPoint获取主屏幕光标全局位置(静态方法)
setPos(QPoint)目标位置坐标-移动主屏幕光标(静态方法)
setShape(Qt.CursorShape)预定义形状-修改当前光标形状
shape()-CursorShape获取当前光标形状标识符
hotSpot()-QPoint获取自定义光标的热点坐标
bitmap()-QBitmap获取光标位图(标准光标返回空)

QCursor类标准光标形状

形状名称Qt::CursorShape 值系统光标名称
cursor-arrowQt::ArrowCursorleft_ptr
cursor-uparrowQt::UpArrowCursorup_arrow
cursor-crossQt::CrossCursorcross
cursor-ibeamQt::IBeamCursoribeam
cursor-waitQt::WaitCursorwait
cursor-busyQt::BusyCursorleft_ptr_watch
cursor-forbiddenQt::ForbiddenCursorforbidden
cursor-handQt::PointingHandCursorpointing_hand
cursor-openhandQt::OpenHandCursoropenhand
cursor-closedhandQt::ClosedHandCursorclosedhand
cursor-whatsthisQt::WhatsThisCursorwhats_this
cursor-sizevQt::SizeVerCursorsize_ver
cursor-sizehQt::SizeHorCursorsize_hor
cursor-sizebQt::SizeBDiagCursorsize_bdiag
cursor-sizefQt::SizeFDiagCursorsize_fdiag
cursor-sizeallQt::SizeAllCursorsize_all
cursor-vsplitQt::SplitVCursorsplit_v
cursor-hsplitQt::SplitHCursorsplit_h
Qt::DragMoveCursorQt::DragMoveCursordnd-move 或 move
Qt::DragCopyCursorQt::DragCopyCursordnd-copy 或 copy
Qt::DragLinkCursorQt::DragLinkCursordnd-link 或 link

标准光标图

Python 应用示例

from PySide6.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout
from PySide6.QtGui import QCursor, QPixmap, Qt
from PySide6.QtCore import QPoint
import sysclass CursorDemo(QWidget):def __init__(self):super().__init__()# 示例1:设置预定义光标self.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))# 示例2:创建自定义位图光标pixmap = QPixmap(32, 32)pixmap.fill(Qt.GlobalColor.blue)  # 简单蓝色方块custom_cursor = QCursor(pixmap, hotX=16, hotY=16)label = QLabel("悬停此处显示自定义光标")label.setCursor(custom_cursor)# 示例3:获取/设置全局光标位置print("当前光标位置:", QCursor.pos())QCursor.setPos(QPoint(100, 100))# 布局layout = QVBoxLayout()layout.addWidget(label)self.setLayout(layout)if __name__ == "__main__":app = QApplication(sys.argv)window = CursorDemo()window.show()app.exec()

关键特性说明

  • 预定义光标

    • 通过 Qt.CursorShape 枚举使用系统内置光标,如箭头、手型、十字等。
  • 自定义光标

    • 使用 QPixmap 创建带透明通道的位图光标。
    • 热点坐标指定点击生效点(默认位图中心)。
  • 多屏幕支持

    • 通过重载方法可指定具体屏幕设置光标位置(如 setPos(QScreen, QPoint))。
  • 光标状态获取

    • shape() 返回当前光标类型,hotSpot() 对自定义光标返回有效热点。

注意事项

  • 推荐使用 32x32 尺寸保证跨平台兼容性

  • X11 系统可能部分形状回退到标准光标

  • 全局光标操作需谨慎,避免与应用事件冲突

http://www.xdnf.cn/news/9065.html

相关文章:

  • 918. 环形子数组的最大和
  • 消费电子卷入“技术军备竞赛”
  • shell脚本基础
  • 记忆上传与自我同一性的哲学-技术综合分析
  • AI日报 - 2025年05月26日
  • 快速了解GO之Channel 通道
  • uv ——新的python包管理工具
  • 如何在 ONLYOFFICE 演示文稿中调整段落首行缩进
  • 第10章 网络与信息安全基础知识
  • 【分治】数组中的逆序对
  • 格恩朗管段超声波流量计:流量测量先锋
  • SD-WAN与传统网络结合:轨道交通网络优化的高效实践与深度解析
  • Day37打卡 @浙大疏锦行
  • 数据库入门:以商品订单系统为例
  • Nuxt.js vs Next.js:Vue 与 React 阵营的 SSR 双雄对比
  • python25-递归算法
  • 人工智能第一币AISPF,首发BitMart交易所
  • P5734 【深基6.例6】文字处理软件
  • Netty学习专栏(六):深度解析Netty核心参数——从参数配置到生产级优化
  • Lines of Thought in Large Language Models
  • (10)-java+ selenium->元素之By class name
  • window 显示驱动开发-Direct3D 呈现性能改进(一)
  • P1068 [NOIP 2009 普及组] 分数线划定
  • 机试 | STL | string | 文字处理软件
  • linux 进程间通信_共享内存
  • Python打卡第37天
  • 数据结构基础知识补充
  • leetcode刷题日记——求根节点到叶节点数字之和
  • Python数据分析基础(一)
  • vue3自定义指令来实现 v-lazyImg 功能