PySide6.QtGui.QCursor

class QCursor

QCursor 类提供了一个具有任意形状的鼠标光标。更多

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

这个类主要用于创建与特定小部件相关联的鼠标光标,并获取和设置鼠标光标的位置。

Qt 有许多标准的光标形状,但你也可以基于 QBitmap、掩码和热点创建自定义的光标形状。

要将光标与一个小部件关联,请使用QWidget::setCursor()。要将光标与所有小部件关联(通常是在短时间内),请使用setOverrideCursor()

要设置光标形状,请使用setShape()或使用QCursor构造函数,该函数将形状作为参数,或者您可以使用Qt::CursorShape枚举中定义的预定义光标之一。

如果你想用自己的位图创建光标,可以使用QCursor构造函数,该函数接受位图和掩码作为参数,或者使用接受像素图作为参数的构造函数。

要设置或获取鼠标光标的位置,请使用静态方法 pos()setPos()

注意

可以在QGuiApplication之前创建一个QCursor,但它除了作为在QGuiApplication之后创建的真实QCursor的占位符外,没有其他用处。尝试使用在QGuiApplication之前创建的QCursor将导致崩溃。

给X11用户的注意事项

在X11上,Qt支持Xcursor库,该库允许使用全彩色图标主题。下表显示了用于每个Qt::CursorShape值的游标名称。如果无法使用下面显示的名称找到游标,则将使用标准的X11游标。注意:X11并未为所有可能的Qt::CursorShape值提供适当的游标。可能会出现一些游标来自Xcursor主题,而其他游标则使用内部位图游标的情况。

形状

Qt::CursorShape 值

光标名称

形状

Qt::CursorShape 值

光标名称

cursor-sizev2

Qt::ArrowCursor

left_ptr

cursor-sizev2

Qt::SizeVerCursor

size_ver

cursor-sizeh4

Qt::UpArrowCursor

up_arrow

cursor-sizeh4

Qt::SizeHorCursor

size_hor

cursor-sizeb6

Qt::CrossCursor

cross

cursor-sizeb6

Qt::SizeBDiagCursor

size_bdiag

cursor-sizef8

Qt::IBeamCursor

ibeam

cursor-sizef8

Qt::SizeFDiagCursor

size_fdiag

cursor-sizeall10

Qt::WaitCursor

wait

cursor-sizeall10

Qt::SizeAllCursor

size_all

cursor-vsplit12

Qt::BusyCursor

left_ptr_watch

cursor-vsplit12

Qt::SplitVCursor

split_v

cursor-hsplit14

Qt::ForbiddenCursor

forbidden

cursor-hsplit14

Qt::SplitHCursor

split_h

cursor-openhand16

Qt::PointingHandCursor

pointing_hand

cursor-openhand16

Qt::OpenHandCursor

openhand

cursor-closedhand18

Qt::WhatsThisCursor

whats_this

cursor-closedhand18

Qt::ClosedHandCursor

closedhand

Qt::DragMoveCursor

dnd-movemove

Qt::DragCopyCursor

dnd-copycopy

Qt::DragLinkCursor

dnd-linklink

另请参阅

QWidget

__init__()

构造一个具有默认箭头形状的光标。

__init__(shape)
Parameters:

形状CursorShape

使用指定的shape构造一个光标。

查看 Qt::CursorShape 以获取形状列表。

另请参阅

setShape()

__init__(cursor)
Parameters:

光标QCursor

构造一个游标 c 的副本。

__init__(pixmap[, hotX=-1[, hotY=-1]])
Parameters:
  • pixmapQPixmap

  • hotX – int

  • hotY – int

构造一个自定义的像素图光标。

pixmap 是图像。通常会给它一个遮罩(使用 setMask() 设置)。hotXhotY 定义了光标的热点。

如果 hotX 为负数,则将其设置为 pixmap().width()/2。如果 hotY 为负数,则将其设置为 pixmap().height()/2

有效的光标大小取决于显示硬件(或底层窗口系统)。我们建议使用32 x 32的光标,因为所有平台都支持这个大小。一些平台还支持16 x 16、48 x 48和64 x 64的光标。

另请参阅

QPixmap() setMask()

__init__(bitmap, mask[, hotX=-1[, hotY=-1]])
Parameters:

构建一个自定义位图光标。

bitmapmask 组成位图。hotXhotY 定义光标的热点。

如果 hotX 为负数,则将其设置为 bitmap().width()/2。如果 hotY 为负数,则将其设置为 bitmap().height()/2

光标 bitmap (B) 和 mask (M) 位是这样组合的:

  • B=1 且 M=1 得到黑色。

  • B=0 且 M=1 时显示白色。

  • B=0 且 M=0 表示透明。

  • B=1 且 M=0 在 Windows 下给出异或结果,在其他所有平台上结果未定义。

使用全局Qt颜色Qt::color0来绘制位图中的0像素,使用Qt::color1来绘制1像素。

有效的光标大小取决于显示硬件(或底层窗口系统)。我们建议使用32 x 32的光标,因为所有平台都支持这个大小。一些平台还支持16 x 16、48 x 48和64 x 64的光标。

另请参阅

QBitmap() setMask()

bitmap()
Return type:

QBitmap

返回光标位图,如果它是标准光标之一,则返回空位图。

bitmap(arg__1)
Parameters:

arg__1ReturnByValueConstant

Return type:

QBitmap

注意

此函数已弃用。

请使用不带参数的重载方法。

返回光标位图,如果它是标准光标之一,则返回空位图。

以前,Qt 提供了一个返回位图指针的 bitmap() 版本。该版本现已被移除。为了保持与旧代码的兼容性,提供了此函数以区分指针函数和值函数。

hotSpot()
Return type:

QPoint

返回光标的热点位置,如果是标准光标之一,则返回 (0, 0)。

mask()
Return type:

QBitmap

返回光标位图掩码,如果是标准光标之一,则返回空位图。

mask(arg__1)
Parameters:

arg__1ReturnByValueConstant

Return type:

QBitmap

注意

此函数已弃用。

请使用不带参数的重载方法。

返回光标位图掩码,如果是标准光标之一,则返回空位图。

以前,Qt 提供了一个版本的 mask(),它通过指针返回位图。该版本现已被移除。为了保持与旧代码的兼容性,提供了此函数以区分通过指针的函数和通过值的函数。

__ne__(rhs)
Parameters:

rhsQCursor

Return type:

布尔

不等运算符。返回等同于 !(lhs == rhs) 的结果。

另请参阅

operator==(const QCursor &lhs, const QCursor &rhs)

pixmap()
Return type:

QPixmap

返回光标位图。仅当光标是位图光标时,此方法有效。

static pos()
Return type:

QPoint

返回主屏幕光标(热点)在全局屏幕坐标中的位置。

你可以调用 QWidget::mapFromGlobal() 将其转换为小部件坐标。

注意

位置是从窗口系统中查询的。如果鼠标事件是通过其他方式生成的(例如,在单元测试中通过QWindowSystemInterface),这些模拟的鼠标移动将不会反映在返回值中。

注意

在没有窗口系统或光标不可用的平台上,返回的位置基于通过QWindowSystemInterface生成的鼠标移动事件。

另请参阅

setPos() primaryScreen()

static pos(screen)
Parameters:

屏幕QScreen

Return type:

QPoint

返回screen光标(热点)在全局屏幕坐标中的位置。

你可以调用 QWidget::mapFromGlobal() 将其转换为小部件坐标。

另请参阅

setPos() mapToGlobal()

static setPos(p)
Parameters:

pQPoint

这是一个重载函数。

将光标(热点)移动到全局屏幕位置的点 p

static setPos(screen, p)
Parameters:

这是一个重载函数。

将光标(热点)移动到全局屏幕位置,该位置由screen在点p处确定。

static setPos(x, y)
Parameters:
  • x – 整数

  • y – 整数

将主屏幕的光标(热点)移动到全局屏幕位置(x, y)。

你可以调用QWidget::mapToGlobal()来将小部件的坐标转换为全局屏幕坐标。

另请参阅

pos() primaryScreen()

static setPos(screen, x, y)
Parameters:
  • 屏幕QScreen

  • x – 整数

  • y – 整数

screen的光标(热点)移动到全局屏幕位置(x, y)。

你可以调用 QWidget::mapToGlobal() 将小部件的坐标转换为全局屏幕坐标。

注意

调用此函数会导致通过窗口系统更改光标位置。窗口系统通常会通过向应用程序的窗口发送鼠标事件来响应。这意味着在单元测试中以及通过QWindowSystemInterface注入虚假鼠标事件的任何地方都应避免使用此函数,因为窗口系统的鼠标状态(例如关于按钮的状态)可能与应用程序生成的事件中的状态不匹配。

注意

在没有窗口系统或光标不可用的平台上,此函数可能不执行任何操作。

另请参阅

pos() mapToGlobal()

setShape(newShape)
Parameters:

newShapeCursorShape

将光标设置为由shape标识的形状。

请参阅 Qt::CursorShape 获取光标形状的列表。

另请参阅

shape()

shape()
Return type:

CursorShape

返回光标形状标识符。

另请参阅

setShape()

swap(other)
Parameters:

其他QCursor

将此光标与other光标交换。