- class QCursor#
该
QCursor
类提供了一种带任意形状的光标。更多...摘要#
方法#
def
__init__()
def
bitmap()
def
hotSpot()
def
mask()
def
__ne__()
def
pixmap()
def
setShape()
def
shape()
def
swap()
静态函数#
注意
此文档可能包含自动从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 值
光标名称
Qt::ArrowCursor
左箭头
Qt::SizeVerCursor
垂直尺寸
Qt::UpArrowCursor
向上箭头
Qt::SizeHorCursor
水平尺寸
Qt::CrossCursor
交叉
Qt::SizeBDiagCursor
对角线尺寸
Qt::IBeamCursor
I型光标
Qt::SizeFDiagCursor
对角线尺寸
Qt::WaitCursor
等待光标
Qt::SizeAllCursor
全部尺寸
Qt::BusyCursor
监视左箭头
Qt::SplitVCursor
垂直分割
Qt::ForbiddenCursor
禁止
Qt::SplitHCursor
水平分割
Qt::PointingHandCursor
指向手
Qt::OpenHandCursor
张开手
Qt::WhatsThisCursor
这是什么
Qt::ClosedHandCursor
合拢手
Qt::DragMoveCursor
dnd-move
或move
Qt::DragCopyCursor
dnd-copy
或copy
Qt::DragLinkCursor
dnd-link
或link
另请参阅
- __init__(shape)#
- 参数
shape –
CursorShape
使用指定的形状构造光标。
有关形状列表,请参阅 Qt::CursorShape。
另请参阅
- __init__(bitmap, mask[, hotX=-1[, hotY=-1]])
构造一个自定义位图光标。
bitmap
和mask
组成了位图。hotX
和hotY
定义了光标的“热点”。如果
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)
- 参数
cursor –
QCursor
构建光标
c
的副本。- __init__(pixmap[, hotX=-1[, hotY=-1]])
- 参数
pixmap –
QPixmap
hotX – int
hotY – int
构建一个自定义位图光标。
pixmap
是图像。通常情况下,应给它提供一个蒙版(使用setMask()
设置)。hotX
和hotY
定义了光标的热点。如果
hotX
为负值,它将设置为pixmap().width()/2
。如果hotY
为负值,它将设置为pixmap().height()/2
。有效的光标大小取决于显示硬件(或底层窗口系统)。我们建议使用 32 x 32 光标,因为这在大平台上都受支持。某些平台还支持 16 x 16、48 x 48 和 64 x 64 光标。
另请参阅
QPixmap()
setMask()
- __init__()
构建一个具有默认箭头形状的光标。
返回光标位图,如果是标准光标之一,则为空位图。
- bitmap(arg__1)
- 参数
arg__1 –
ReturnByValueConstant
- 返回类型:
注意
此功能已弃用。
请改用不带参数的重载。
返回光标位图,如果是标准光标之一,则为空位图。
此前,Qt 提供了返回指针的
bitmap()
版本。现在已经删除此版本。为了保持与旧代码的兼容性,提供了此函数以区分通过指针调用的函数和通过值调用的函数。返回光标的热点,如果是标准光标之一,则为 (0, 0)。
返回光标位图遮罩,或者如果它是一个标准光标,则返回空位图。
- mask(arg__1)
- 参数
arg__1 –
ReturnByValueConstant
- 返回类型:
注意
此功能已弃用。
请改用不带参数的重载。
返回光标位图遮罩,或者如果它是一个标准光标,则返回空位图。
之前,Qt提供了一种返回位图的
mask()
版本。现在已移除该版本。为了保持与旧代码的兼容性,这个函数被提供以区分按指针函数和按值函数。不等于运算符。返回 !(
lhs
==rhs
) 的等效值。另请参阅
operator==(const QCursor &lhs, const QCursor &rhs)
返回光标位图。这只在光标是位图光标时有效。
返回光标(热点)在主屏全局坐标系中的位置。
您可以通过调用 QWidget::mapFromGlobal() 将其转换为小部件坐标。
注意
位置是从窗口系统检索的。如果通过其他方式生成鼠标事件(例如,通过单元测试中的 QWindowSystemInterface),则那些模拟鼠标移动将不会反映在返回值中。
返回光标(热点)在
screen
中的全局屏幕坐标。您可以通过调用 QWidget::mapFromGlobal() 将其转换为小部件坐标。
另请参阅
setPos()
mapToGlobal()
这是一个重载函数。
将光标(热点)移动到点
p
处屏幕的全局屏幕位置。- 静态 setPos(screen, x, y)
- 参数
screen -
QScreen
x – int
y – int
将屏幕的
screen
光标移动到全局屏幕位置(《x`,《y`)。您可以使用(QWidget::mapToGlobal()将小部件坐标转换为全局屏幕坐标。
注意
调用此函数会导致通过窗口管理系统更改光标位置。通常,窗口管理系统会通过发送鼠标事件到应用程序的窗口来响应。这意味着,在单元测试中,以及通过 QWindowSystemInterface 注入模拟鼠标事件的任何地方,应避免使用此函数,因为窗口管理系统的鼠标状态(例如,按钮)可能与应用程序生成的事件中的状态不匹配。
- 静态 setPos(p)
- 参数
p –
QPoint
这是一个重载函数。
将光标(热点)移动到全局屏幕位置在点
p
。- 静态 setPos(x, y)
- 参数
x – int
y – int
将主屏幕的光标(热点)移动到全局屏幕位置(《x`,《y`)。
您可以使用(QWidget::mapToGlobal()将小部件坐标转换为全局屏幕坐标。
另请参阅
- setShape(newShape)#
- 参数
newShape –
CursorShape
将鼠标设置为
shape
指定的形状。有关鼠标形状列表,请参阅 Qt::CursorShape。
另请参阅
- shape()#
- 返回类型:
返回鼠标形状标识符。
另请参阅
将光标与
其他
光标交换。