QCursor 類

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 用戶注意事項

在 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 設計手冊:光標 .

成員函數文檔編製

QCursor:: QCursor ()

采用默認箭頭形狀構造光標。

QCursor:: QCursor ( Qt::CursorShape shape )

構造光標采用指定 shape .

Qt::CursorShape 為形狀列錶。

另請參閱 setShape ().

QCursor:: QCursor (const QBitmap & bitmap , const QBitmap & mask , int hotX = -1, int hotY = -1)

構造自定義位圖光標。

bitmap and mask 構成位圖。 hotX and 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::QBitmap () 和 QBitmap::setMask ().

QCursor:: QCursor (const QPixmap & pixmap , int hotX = -1, int hotY = -1)

構造自定義像素圖光標。

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 ().

QCursor:: QCursor (const QCursor & c )

構造拷貝為光標 c .

QCursor:: QCursor ( QCursor && other )

移動構造光標來自 other 。在移動之後,唯一有效操作對於 other 被銷毀並 (移動和復製) 賦值。在移動實例上調用任何其它成員函數的效果,是不確定的。

該函數在 Qt 5.5 引入。

QCursor:: ~QCursor ()

銷毀光標。

const QBitmap *QCursor:: bitmap () const

返迴光標位圖,或 0 若它是標準光標之一。

QPoint QCursor:: hotSpot () const

返迴光標熱點,或 (0, 0) 若它是標準光標之一。

const QBitmap *QCursor:: mask () const

返迴光標位圖遮罩,或 0 若它是標準光標之一。

QPixmap QCursor:: pixmap () const

返迴光標像素圖。這纔有效,若光標是像素圖光標。

[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 .

void QCursor:: setShape ( Qt::CursorShape shape )

將光標設為標識形狀通過 shape .

Qt::CursorShape 瞭解光標形狀列錶。

另請參閱 shape ().

Qt::CursorShape QCursor:: shape () const

返迴光標形狀標識符。返迴值是某一 Qt::CursorShape 枚舉值 (鑄造成 int)。

另請參閱 setShape ().

void QCursor:: swap ( QCursor & other )

交換此光標與 other 光標。

QVariant QCursor:: operator QVariant () const

返迴光標作為 QVariant .

QCursor &QCursor:: operator= (const QCursor & c )

賦值 c 給此光標並返迴此光標的引用。

QCursor &QCursor:: operator= ( QCursor && other )

移動賦值 other 到此 QCursor 實例。

該函數在 Qt 5.2 引入。

相關非成員

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

不等運算符。返迴相當於 !( lhs == rhs ).

該函數在 Qt 5.10 引入。

另請參閱 operator== (const QCursor &lhs, const QCursor &rhs).

QDataStream & operator<< ( QDataStream & stream , const QCursor & cursor )

寫入 cursor stream .

另請參閱 序列化 Qt 數據類型 .

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).

QDataStream & operator>> ( QDataStream & stream , QCursor & cursor )

讀取 cursor stream .

另請參閱 序列化 Qt 數據類型 .