The QCursor 类提供具有任意形状的鼠标光标。 更多...
| 头: | #include <QCursor> | 
| qmake: | QT += gui | 
| QCursor () | |
| QCursor (Qt::CursorShape shape ) | |
| QCursor (const QBitmap & bitmap , const QBitmap & mask , int hotX = -1, int hotY = -1) | |
| QCursor (const QPixmap & pixmap , int hotX = -1, int hotY = -1) | |
| QCursor (const QCursor & c ) | |
| QCursor (QCursor && other ) | |
| ~QCursor () | |
| const QBitmap * | bitmap () const | 
| QPoint | hotSpot () const | 
| const QBitmap * | mask () const | 
| QPixmap | pixmap () const | 
| void | setShape (Qt::CursorShape shape ) | 
| Qt::CursorShape | shape () const | 
| void | swap (QCursor & other ) | 
| QVariant | operator QVariant () const | 
| QCursor & | operator= (const QCursor & c ) | 
| QCursor & | operator= (QCursor && other ) | 
| 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 ) | 
The QCursor 类提供具有任意形状的鼠标光标。
此类主要用于创建关联特定 Widget 的鼠标光标,及获取和设置鼠标光标的位置。
Qt 有许多标准光标形状,但也可以制作自定义光标形状基于 QBitmap 、遮罩及热点。
Widget 要关联光标,使用 QWidget::setCursor ()。要关联光标与所有 Widget (通常为短时间周期),使用 QGuiApplication::setOverrideCursor ().
要设置光标形状使用 QCursor::setShape () 或使用 QCursor 构造函数接受形状作为自变量,或者可以使用某一预定义光标的定义在 Qt::CursorShape 枚举。
若想要采用自己的位图创建光标,要么使用 QCursor 构造函数接受位图和遮罩作为自变量,或构造函数接受像素图作为自变量。
要设置 (或获取) 鼠标光标的位置,使用静态方法 QCursor::pos () 和 QCursor::setPos ().
注意: 它是可能的创建 QCursor before 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 设计手册:光标 .
采用默认箭头形状构造光标。
构造光标采用指定 shape .
见 Qt::CursorShape 为形状列表。
另请参阅 setShape ().
构造自定义位图光标。
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 ().
构造自定义像素图光标。
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 ().
构造拷贝为光标 c .
移动构造光标来自 other 。在移动之后,唯一有效操作对于 other 被销毁并 (移动和复制) 赋值。在移动实例上调用任何其它成员函数的效果,是不确定的。
该函数在 Qt 5.5 引入。
销毁光标。
返回光标位图,或 0 若它是标准光标之一。
返回光标热点,或 (0, 0) 若它是标准光标之一。
返回光标位图遮罩,或 0 若它是标准光标之一。
返回光标像素图。这才有效,若光标是像素图光标。
[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 ().
返回光标形状标识符。返回值是某一 Qt::CursorShape 枚举值 (铸造成 int)。
另请参阅 setShape ().
交换此光标与 other 光标。
返回光标作为 QVariant .
赋值 c 给此光标并返回此光标的引用。
移动赋值 other 到此 QCursor 实例。
该函数在 Qt 5.2 引入。
不等运算符。返回相当于 !( lhs == rhs ).
该函数在 Qt 5.10 引入。
另请参阅 operator== (const QCursor &lhs, const QCursor &rhs).
写入 cursor 到 stream .
另请参阅 序列化 Qt 数据类型 .
						相等运算符。返回
						
true
						
						if
						
							lhs
						
						and
						
							rhs
						
						有相同
						
							shape()
						
						和在这种情况下对于
						
							位图光标
						
						,相同
						
							hotSpot()
						
						和相同
						
							pixmap()
						
						或相同
						
							bitmap()
						
						and
						
							mask()
						
						.
					
注意: 当比较位图光标时,此函数仅比较位图的 缓存键 ,不是每个像素。
该函数在 Qt 5.10 引入。
另请参阅 operator!= (const QCursor &lhs, const QCursor &rhs).
读取 cursor 从 stream .
另请参阅 序列化 Qt 数据类型 .