The QGestureRecognizer 類提供用於手勢識彆的基礎設施。 更多...
| 頭: | #include <QGestureRecognizer> |
| qmake: | QT += widgets |
| Since: | Qt 4.6 |
| flags | 結果 |
| enum | ResultFlag { Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture, ConsumeEventHint } |
| QGestureRecognizer () | |
| virtual | ~QGestureRecognizer () |
| virtual QGesture * | create (QObject * target ) |
| virtual Result | recognize (QGesture * gesture , QObject * watched , QEvent * event ) = 0 |
| virtual void | reset (QGesture * gesture ) |
| Qt::GestureType | registerRecognizer (QGestureRecognizer * recognizer ) |
| void | unregisterRecognizer (Qt::GestureType type ) |
The QGestureRecognizer 類提供用於手勢識彆的基礎設施。
手勢識彆器負責創建和管理 QGesture 對象和監視的輸入事件會被發送給 QWidget and QGraphicsObject 子類。 QGestureRecognizer 是實現自定義手勢的基類。
隻需要為標準手勢提供手勢識彆的開發者,不需要直接使用此類。由框架在幕後創建實例。
Qt 中手勢處理的概述和在應用程序中使用手勢的有關信息,見 Widget 和圖形視圖中的手勢 文檔。
識彆手勢的過程涉及過濾發送給特定對象的輸入事件,和修改關聯 QGesture 對象以包括關於用戶輸入的相關信息。
創建手勢當框架調用 create () 處理用戶輸入為特定實例化的 QWidget or QGraphicsObject 子類。 QGesture 對象的創建是為將每個 Widget 或項配置成使用手勢。
一旦 QGesture 已創建為目標對象,手勢識彆器將接收事件在其 recognize () 處理程序函數。
當取消手勢時, reset () 函數被調用,給齣識彆器改變以更新適當特性在相應 QGesture 對象。
要添加支持新手勢,需要派生 QGestureRecognizer 以創建自定義識彆器類 (構造此類的實例),並將它注冊到應用程序通過調用 QGestureRecognizer::registerRecognizer ()。還可以子類化 QGesture 以創建自定義手勢類,或依賴動態特性來錶達想要處理手勢的特定細節。
自定義 QGestureRecognizer 子類需要重實現 recognize () 函數以處理和過濾傳入輸入事件為 QWidget and QGraphicsObject 子類。盡管手勢識彆邏輯是在此函數中實現的,可以將識彆過程狀態的有關持久信息存儲在 QGesture 供給對象。 recognize () 函數必須返迴值 QGestureRecognizer::Result 指示給定手勢和目標對象的識彆狀態。這確定是否有將手勢事件交付給目標對象。
若要選擇錶示手勢通過自定義 QGesture 子類,將需要重實現 create () 函數以構造手勢類實例。同樣,可能需要重實現 reset () 函數若需要特殊處理自定義手勢對象,當取消手勢時。
另請參閱 QGesture .
此枚舉描述在手勢識彆器狀態機中,當前事件過濾步驟的結果。
結果由狀態值 (Ignore、MayBeGesture、TriggerGesture,FinishGesture 和 CancelGesture 之一) 和可選提示 (ConsumerEventHint) 組成。
| 常量 | 值 | 描述 |
|---|---|---|
QGestureRecognizer::Ignore
|
0x0001
|
事件不改變識彆器的狀態。 |
QGestureRecognizer::MayBeGesture
|
0x0002
|
事件改變識彆器的內部狀態,但尚未清零它 (不管是不是手勢)。識彆器需要過濾更多事件纔決定。可以自動重置 MayBeGesture 狀態下的手勢識彆器,若它們花太長時間識彆手勢。 |
QGestureRecognizer::TriggerGesture
|
0x0004
|
手勢已觸發且適當 QGesture 對象將被交付給目標作為部分屬於 QGestureEvent . |
QGestureRecognizer::FinishGesture
|
0x0008
|
手勢已成功完成且適當 QGesture 對象將被交付給目標作為部分屬於 QGestureEvent . |
QGestureRecognizer::CancelGesture
|
0x0010
|
事件清楚它不是手勢。若手勢識彆器之前處於 GestureTriggered 狀態,則手勢被取消且適當 QGesture 對象將被交付給目標作為部分屬於 QGestureEvent . |
QGestureRecognizer::ConsumeEventHint
|
0x0100
|
此提示指定手勢框架應消費過濾事件,且不將它交付給接收者。 |
Result 類型是 typedef 對於 QFlags <ResultFlag>。它存儲 ResultFlag 值的 OR 組閤。
另請參閱 QGestureRecognizer::recognize ().
構造新的手勢識彆器對象。
[虛擬]
QGestureRecognizer::
~QGestureRecognizer
()
銷毀手勢識彆器。
[虛擬]
QGesture
*QGestureRecognizer::
create
(
QObject
*
target
)
Qt 調用此函數以創建新的 QGesture 對象為給定 target ( QWidget or QGraphicsObject ).
重實現此函數以創建自定義 QGesture 派生手勢對象,若有必要。
應用程序擁有創建手勢對象的所有權。
[pure virtual]
結果
QGestureRecognizer::
recognize
(
QGesture
*
gesture
,
QObject
*
watched
,
QEvent
*
event
)
處理給定 event 為 watched 對象,更新狀態為 gesture 對象按要求,並返迴用於當前識彆步驟的閤適結果。
框架調用此函數以允許識彆器過濾輸入事件,輸入事件已分派給 QWidget or QGraphicsObject 正監視實例。
結果反映手勢的識彆程度。狀態對於 gesture 對象其設置從屬結果。
另請參閱 QGestureRecognizer::Result .
[static]
Qt::GestureType
QGestureRecognizer::
registerRecognizer
(
QGestureRecognizer
*
recognizer
)
注冊給定 recognizer 在手勢框架並為它返迴手勢 ID。
應用程序擁有所有權對於 recognizer 並返迴關聯它的手勢類型 ID。采用手勢識彆器處理自定義 QGesture 對象 (即:那些會返迴 Qt::CustomGesture 在 QGesture::gestureType () 函數),返迴值是生成的手勢 ID 帶有 Qt::CustomGesture 設置標誌。
另請參閱 unregisterRecognizer (), QGestureRecognizer::create (),和 QGesture .
[虛擬]
void
QGestureRecognizer::
reset
(
QGesture
*
gesture
)
框架調用此函數以重置給定 gesture .
重實現此函數以實現額外要求對於自定義 QGesture 對象。這可能有必要若實現自定義 QGesture 其特性需要特殊處理,當重置手勢時。
[static]
void
QGestureRecognizer::
unregisterRecognizer
(
Qt::GestureType
type
)
取消注冊所有手勢識彆器為指定 type .
另請參閱 registerRecognizer ().