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

作用

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 sys

class 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 系统可能部分形状回退到标准光标

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Humbunklung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值