QCursor 类提供具有任意形状的鼠标光标。 更多...
头: | #include <QCursor> |
CMake: |
find_package(Qt6 COMPONENTS Gui REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
QCursor (QCursor && other ) | |
QCursor (const QCursor & c ) | |
QCursor (const QPixmap & pixmap , int hotX = -1, int hotY = -1) | |
QCursor (const QBitmap & bitmap , const QBitmap & mask , int hotX = -1, int hotY = -1) | |
QCursor (Qt::CursorShape shape ) | |
QCursor () | |
QCursor & | operator= (QCursor && other ) |
QCursor & | operator= (const QCursor & c ) |
~QCursor () | |
QBitmap | bitmap () const |
QPoint | hotSpot () const |
QBitmap | mask () const |
QPixmap | pixmap () const |
void | setShape (Qt::CursorShape shape ) |
Qt::CursorShape | shape () const |
void | swap (QCursor & other ) |
QVariant | operator QVariant () const |
QPoint | pos () |
QPoint | pos (const QScreen * screen ) |
void | setPos (int x , int y ) |
void | setPos (QScreen * screen , int x , int y ) |
void | setPos (const QPoint & p ) |
void | setPos (QScreen * screen , const QPoint & p ) |
bool | operator!= (const QCursor & lhs , const QCursor & rhs ) |
QDataStream & | operator<< (QDataStream & stream , const QCursor & cursor ) |
bool | operator== (const QCursor & lhs , const QCursor & rhs ) |
QDataStream & | operator>> (QDataStream & stream , QCursor & cursor ) |
此类主要用于创建关联特定 Widget 的鼠标光标,及获取和设置鼠标光标的位置。
Qt 有许多标准光标形状,但也可以制作自定义光标形状基于 QBitmap 、遮罩及热点。
Widget 要关联光标,使用 QWidget::setCursor ()。要关联光标与所有 Widget (通常为短时间周期),使用 QGuiApplication::setOverrideCursor ().
要设置光标形状使用 QCursor::setShape () 或使用以形状作为自变量的 QCursor 构造函数,或可以使用某一预定义光标定义于 Qt::CursorShape 枚举。
若想要采用自己的位图创建光标,要么使用 QCursor 构造函数接受位图和遮罩作为自变量,或构造函数接受像素图作为自变量。
要设置 (或获取) 鼠标光标的位置,使用静态方法 QCursor::pos () 和 QCursor::setPos ().
注意: 它是可能的创建 QCursor 先于 QGuiApplication ,但它没什么用,除了作为占位符对于真实 QCursor 的创建后于 QGuiApplication 。试图使用创建的 QCursor 先于 QGuiApplication 将导致崩溃。
在 X11,Qt 支持 Xcursor 库,允许全彩图标主题。下表展示的光标名称被用于每 Qt::CursorShape 值。若使用以下展示的名称找不到光标,则使用标准 X11 光标代替。注意:X11 没有提供适当光标为所有可能的 Qt::CursorShape 值。某些游标可能获取自 Xcursor 主题,而其它的使用内部位图光标。
形状 | Qt::CursorShape 值 | 光标名称 | 形状 | Qt::CursorShape 值 | 光标名称 |
---|---|---|---|---|---|
Qt::ArrowCursor |
left_ptr
|
Qt::SizeVerCursor |
size_ver
|
||
Qt::UpArrowCursor |
up_arrow
|
Qt::SizeHorCursor |
size_hor
|
||
Qt::CrossCursor |
cross
|
Qt::SizeBDiagCursor |
size_bdiag
|
||
Qt::IBeamCursor |
ibeam
|
Qt::SizeFDiagCursor |
size_fdiag
|
||
Qt::WaitCursor |
wait
|
Qt::SizeAllCursor |
size_all
|
||
Qt::BusyCursor |
left_ptr_watch
|
Qt::SplitVCursor |
split_v
|
||
Qt::ForbiddenCursor |
forbidden
|
Qt::SplitHCursor |
split_h
|
||
Qt::PointingHandCursor |
pointing_hand
|
Qt::OpenHandCursor |
openhand
|
||
Qt::WhatsThisCursor |
whats_this
|
Qt::ClosedHandCursor |
closedhand
|
||
Qt::DragMoveCursor |
dnd-move
or
move
|
Qt::DragCopyCursor |
dnd-copy
or
copy
|
||
Qt::DragLinkCursor |
dnd-link
or
link
|
另请参阅 QWidget and GUI 设计手册:光标 .
[since 5.5]
QCursor::
QCursor
(
QCursor
&&
other
)
移动构造光标来自 other 。在移动之后,唯一有效操作对于 other 被销毁并 (移动和复制) 赋值。在移动实例上调用任何其它成员函数的效果,是不确定的。
该函数在 Qt 5.5 引入。
构造拷贝为光标 c .
构造自定义像素图光标。
pixmap 是图像。它通常给出遮罩 (设置使用 QPixmap::setMask ()). hotX and hotY 定义光标的热点。
若
hotX
为负,它被设为
pixmap().width()/2
。若
hotY
为负,它被设为
pixmap().height()/2
.
有效光标大小从属显示硬件 (或底层窗口系统)。推荐使用 32 x 32 的光标,因为所有平台支持此大小。某些平台还支持 16 x 16、48 x 48 及 64 x 64 光标。
另请参阅 QPixmap::QPixmap () 和 QPixmap::setMask ().
构造自定义位图光标。
bitmap and mask 构成位图。 hotX and hotY 定义光标的热点。
若
hotX
为负,它被设为
bitmap().width()/2
。若
hotY
为负,它被设为
bitmap().height()/2
.
光标 bitmap (B) 和 mask (M) 位的组合像这样:
使用全局 Qt 颜色 Qt::color0 去绘制 0 像素和 Qt::color1 去绘制 1 像素在位图中。
有效光标大小从属显示硬件 (或底层窗口系统)。推荐使用 32 x 32 的光标,因为所有平台支持此大小。某些平台还支持 16 x 16、48 x 48 及 64 x 64 光标。
另请参阅 QBitmap::QBitmap () 和 QBitmap::setMask ().
构造光标采用指定 shape .
见 Qt::CursorShape 为形状列表。
另请参阅 setShape ().
采用默认箭头形状构造光标。
[since 5.2]
QCursor
&QCursor::
operator=
(
QCursor
&&
other
)
移动赋值 other 到此 QCursor 实例。
该函数在 Qt 5.2 引入。
赋值 c 给此光标并返回此光标的引用。
销毁光标。
返回光标位图,或返回 null 位图若它是标准光标之一。
返回光标热点,或 (0, 0) 若它是标准光标之一。
返回光标位图遮罩,或 null 位图若它是标准光标之一。
返回光标像素图。这才有效,若光标是像素图光标。
[static]
QPoint
QCursor::
pos
()
返回首要屏幕光标 (热点) 在全局屏幕坐标中的位置。
可以调用 QWidget::mapFromGlobal () 以将其翻译成 Widget 坐标。
注意: 位置是从窗口系统查询。若通过其它手段 (如:在单元测试中通过 QWindowSystemInterface) 生成鼠标事件,那些虚假鼠标移动将不会反映在返回值中。
注意: 在没有窗口系统 (或光标不可用) 的平台,返回位置基于凭借 QWindowSystemInterface 生成的鼠标移动事件。
另请参阅 setPos (), QWidget::mapFromGlobal (), QWidget::mapToGlobal (),和 QGuiApplication::primaryScreen ().
[static]
QPoint
QCursor::
pos
(const
QScreen
*
screen
)
返回光标 (热点) 的位置为 screen 按全局屏幕坐标。
可以调用 QWidget::mapFromGlobal () 以将其翻译成 Widget 坐标。
另请参阅 setPos (), QWidget::mapFromGlobal (),和 QWidget::mapToGlobal ().
[static]
void
QCursor::
setPos
(
int
x
,
int
y
)
把首要屏幕光标 (热点) 移至全局屏幕位置 ( x , y ).
可以调用 QWidget::mapToGlobal () 以将 Widget 坐标翻译成全局屏幕坐标。
另请参阅 pos (), QWidget::mapFromGlobal (), QWidget::mapToGlobal (),和 QGuiApplication::primaryScreen ().
[static]
void
QCursor::
setPos
(
QScreen
*
screen
,
int
x
,
int
y
)
移动光标 (热点) 为 screen 到全局屏幕位置 ( x , y ).
可以调用 QWidget::mapToGlobal () 以将 Widget 坐标翻译成全局屏幕坐标。
注意: 调用此函数将导致透过窗口系统,改变光标位置。窗口系统通常会通过向应用程序窗口发送鼠标事件,来响应。这意味着在单元测试和凭借 QWindowSystemInterface 注入虚假鼠标事件的任何地方都应避免使用此函数,因为窗口系统的鼠标状态 (例如:关于按钮) 可能不匹配应用程序生成的事件状态。
注意: 在没有窗口系统或光标不可用的平台,此函数可能什么都不做。
另请参阅 pos (), QWidget::mapFromGlobal (),和 QWidget::mapToGlobal ().
[static]
void
QCursor::
setPos
(const
QPoint
&
p
)
这是重载函数。
把光标 (热点) 移动全局屏幕位置,在点 p .
[static]
void
QCursor::
setPos
(
QScreen
*
screen
, const
QPoint
&
p
)
这是重载函数。
将光标 (热点) 移至全局屏幕位置为 screen 在点 p .
将光标设为标识形状通过 shape .
见 Qt::CursorShape 了解光标形状列表。
另请参阅 shape ().
返回光标形状标识符。
另请参阅 setShape ().
[since 5.7]
void
QCursor::
swap
(
QCursor
&
other
)
交换此光标与 other 光标。
该函数在 Qt 5.7 引入。
返回光标作为 QVariant .
[since 5.10]
bool
operator!=
(const
QCursor
&
lhs
, const
QCursor
&
rhs
)
不等运算符。返回相当于 !( lhs == rhs ).
该函数在 Qt 5.10 引入。
另请参阅 operator== (const QCursor &lhs, const QCursor &rhs).
写入 cursor 到 stream .
另请参阅 序列化 Qt 数据类型 .
[since 5.10]
bool
operator==
(const
QCursor
&
lhs
, const
QCursor
&
rhs
)
相等运算符。返回
true
if
lhs
and
rhs
有相同
shape()
和在这种情况下对于
位图光标
,相同
hotSpot()
和相同
pixmap()
或相同
bitmap()
and
mask()
.
注意: 当比较位图光标时,此函数仅比较位图的 缓存键 ,不是每个像素。
该函数在 Qt 5.10 引入。
另请参阅 operator!= (const QCursor &lhs, const QCursor &rhs).
读取 cursor 从 stream .
另请参阅 序列化 Qt 数据类型 .