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-arrow1

Qt::ArrowCursor

左箭头

cursor-sizev2

Qt::SizeVerCursor

垂直尺寸

cursor-uparrow3

Qt::UpArrowCursor

向上箭头

cursor-sizeh4

Qt::SizeHorCursor

水平尺寸

cursor-cross5

Qt::CrossCursor

交叉

cursor-sizeb6

Qt::SizeBDiagCursor

对角线尺寸

cursor-ibeam7

Qt::IBeamCursor

I型光标

cursor-sizef8

Qt::SizeFDiagCursor

对角线尺寸

cursor-wait9

Qt::WaitCursor

等待光标

cursor-sizeall10

Qt::SizeAllCursor

全部尺寸

cursor-busy11

Qt::BusyCursor

监视左箭头

cursor-vsplit12

Qt::SplitVCursor

垂直分割

cursor-forbidden13

Qt::ForbiddenCursor

禁止

cursor-hsplit14

Qt::SplitHCursor

水平分割

cursor-hand15

Qt::PointingHandCursor

指向手

cursor-openhand16

Qt::OpenHandCursor

张开手

cursor-whatsthis17

Qt::WhatsThisCursor

这是什么

cursor-closedhand18

Qt::ClosedHandCursor

合拢手

Qt::DragMoveCursor

dnd-movemove

Qt::DragCopyCursor

dnd-copycopy

Qt::DragLinkCursor

dnd-linklink

另请参阅

QWidget

__init__(shape)#
参数

shapeCursorShape

使用指定的形状构造光标。

有关形状列表,请参阅 Qt::CursorShape。

另请参阅

setShape()

__init__(bitmap, mask[, hotX=-1[, hotY=-1]])
参数

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

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 下得到 XOR 结果,在其他所有平台上得到未定义结果。

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

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

另请参阅

QBitmap() setMask()

__init__(cursor)
参数

cursorQCursor

构建光标 c 的副本。

__init__(pixmap[, hotX=-1[, hotY=-1]])
参数
  • 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()#
返回类型:

QBitmap

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

bitmap(arg__1)
参数

arg__1ReturnByValueConstant

返回类型:

QBitmap

注意

此功能已弃用。

请改用不带参数的重载。

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

此前,Qt 提供了返回指针的 bitmap() 版本。现在已经删除此版本。为了保持与旧代码的兼容性,提供了此函数以区分通过指针调用的函数和通过值调用的函数。

hotSpot()#
返回类型:

QPoint

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

mask()#
返回类型:

QBitmap

返回光标位图遮罩,或者如果它是一个标准光标,则返回空位图。

mask(arg__1)
参数

arg__1ReturnByValueConstant

返回类型:

QBitmap

注意

此功能已弃用。

请改用不带参数的重载。

返回光标位图遮罩,或者如果它是一个标准光标,则返回空位图。

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

__ne__(rhs)#
参数

rhs - QCursor

返回类型:

bool

不等于运算符。返回 !(lhs == rhs) 的等效值。

另请参阅

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

pixmap()#
返回类型:

QPixmap

返回光标位图。这只在光标是位图光标时有效。

static pos()#
返回类型:

QPoint

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

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

注意

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

注意

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

另请参阅

setPos() primaryScreen()

static pos(screen)
参数

screen - QScreen

返回类型:

QPoint

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

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

另请参阅

setPos() mapToGlobal()

static setPos(screen, p)#
参数

这是一个重载函数。

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

静态 setPos(screen, x, y)
参数
  • screen - QScreen

  • x – int

  • y – int

将屏幕的screen光标移动到全局屏幕位置(《x`,《y`)。

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

注意

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

注意

在没有窗口管理系统或光标不可用的平台上,此函数可能不起作用。

另请参阅

pos() mapToGlobal()

静态 setPos(p)
参数

pQPoint

这是一个重载函数。

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

静态 setPos(x, y)
参数
  • x – int

  • y – int

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

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

另请参阅

pos() primaryScreen()

setShape(newShape)#
参数

newShapeCursorShape

将鼠标设置为shape指定的形状。

有关鼠标形状列表,请参阅 Qt::CursorShape。

另请参阅

shape()

shape()#
返回类型:

CursorShape

返回鼠标形状标识符。

另请参阅

setShape()

swap(other)#
参数

otherQCursor

将光标与 其他 光标交换。