The QTouchEvent 類包含觸摸事件的描述參數。 更多...
| 頭: | #include <QTouchEvent> |
| qmake: | QT += gui |
| Since: | Qt 4.6 |
| 繼承: | QInputEvent |
| class | TouchPoint |
| QTouchEvent (QEvent::Type eventType , QTouchDevice * device = Q_NULLPTR, Qt::KeyboardModifiers modifiers = Qt::NoModifier, Qt::TouchPointStates touchPointStates = Qt::TouchPointStates(), const QList<QTouchEvent::TouchPoint> & touchPoints = QList<QTouchEvent::TouchPoint> ()) | |
| ~QTouchEvent () | |
| QTouchDevice * | device () const |
| QObject * | target () const |
| Qt::TouchPointStates | touchPointStates () const |
| const QList<QTouchEvent::TouchPoint> & | touchPoints () const |
| QWindow * | window () const |
The QTouchEvent 類包含觸摸事件的描述參數。
觸摸事件發生,當在觸摸設備 (譬如:觸摸屏或跟蹤闆) 中按下、釋放或移動一個或多個觸摸點時。要接收觸摸事件,Widget 必須擁有 Qt::WA_AcceptTouchEvents 屬性設置和圖形項需要擁有 acceptTouchEvents 屬性設置為 true。
當使用 QAbstractScrollArea 基 Widget,應啓用 Qt::WA_AcceptTouchEvents 屬性在捲動區域 viewport .
類似於 QMouseEvent ,Qt 自動抓取每個觸摸點當在 Widget 內第一次按下時,且小部件將接收觸摸點的所有更新,直到它被釋放。注意,Widget 能接收很多觸摸點事件,且多個小部件可能同時接收觸摸事件。
所有觸摸事件類型,包括 QEvent::TouchBegin , QEvent::TouchUpdate , QEvent::TouchEnd or QEvent::TouchCancel 。重實現 QWidget::event () 或 QAbstractScrollArea::viewportEvent () 對於 Widget 和 QGraphicsItem::sceneEvent () 對於要接收觸摸事件的圖形視圖項。
不像 Widget,QWindows 始終接收觸摸事件,無需選項。當直接工作於 QWindow ,是足夠的重實現 QWindow::touchEvent ().
The QEvent::TouchUpdate and QEvent::TouchEnd 事件會被發送給 Widget 或項接受 QEvent::TouchBegin 事件。若 QEvent::TouchBegin 事件未接受且未被事件過濾器所過濾,則進一步觸摸事件不會被發送直到下一 QEvent::TouchBegin .
某些係統可能發送事件類型 QEvent::TouchCancel 。當收到此事件時,應用程序被請求忽略整個活動觸摸序列。例如,在閤成係統中,閤成器可以決定將某些手勢視為係統範圍手勢。每當做齣這種決定 (識彆手勢) 時,會通知客戶端采用 QEvent::TouchCancel 事件,因此它們可以相應更新其狀態。
The touchPoints () 函數返迴事件中包含的所有觸摸點的列錶。注意,此列錶可能為空,例如,若為 QEvent::TouchCancel 事件。可以檢索每個觸摸點的有關信息使用 QTouchEvent::TouchPoint 類。 Qt::TouchPointState 枚舉描述觸摸點可能擁有的不同狀態。
注意: 列錶 touchPoints () 從不會是一部分:觸摸事件將始終包含目標窗口 (或 Widget) 到發送事件的每一現有物理觸摸聯絡的觸摸點。例如,假定所有觸摸都目標同一窗口 (或 Widget),則事件具有條件 touchPoints ().count()==2 保證,暗示觸摸觸摸屏 (或觸摸闆) 的準確手指數為 2。
默認情況下, QGuiApplication 翻譯第一觸摸點在 QTouchEvent 成 QMouseEvent 。這使啓用觸摸事件成為可能,當現有 Widget 通常不處理 QTouchEvent 。見下文,瞭解某些需要特殊注意事項的有關信息,當這樣做時。
QEvent::TouchBegin 是發送給 Widget 的第一觸摸事件。 QEvent::TouchBegin 事件包含指示接收者是否想要事件的特殊接受標誌。默認情況下,接受事件。應該調用 ignore () 若 Widget 不處理觸摸事件。 QEvent::TouchBegin 事件會沿父級 Widget 鏈嚮上傳播,直到小部件接受它采用 accept (),或事件過濾器消耗掉它。對於 QGraphicsItems, QEvent::TouchBegin 事件被傳播給鼠標下項 (類似於 QGraphicsItems 的鼠標事件傳播)。
如上所述,它是可能的幾個 Widget 可以同時接收 QTouchEvents。不管怎樣,Qt 確保從不重復發送 QEvent::TouchBegin 事件給同一 Widget,理論上傳播期間可能發生,例如,若用戶觸摸 2 單獨 Widget 在 QGroupBox 與兩 Widget 忽略 QEvent::TouchBegin 事件。
為避免這,Qt 使用下列規則將新觸摸點分組到一起:
這使同級 Widget 能夠獨立處理觸摸事件,同時確保 QTouchEvents 序列始終正確成為可能。
QTouchEvent 的交付獨立於 QMouseEvent 。應用程序標誌 Qt::AA_SynthesizeTouchForUnhandledMouseEvents and Qt::AA_SynthesizeMouseForUnhandledTouchEvents 可以用於啓用 (或禁用) 將觸摸事件自動閤成為鼠標事件,和將鼠標事件自動閤成為觸摸事件。
另請參閱 QTouchEvent::TouchPoint , Qt::TouchPointState , Qt::WA_AcceptTouchEvents ,和 QGraphicsItem::acceptTouchEvents ().
構造 QTouchEvent 采用給定 eventType , device ,和 touchPoints 。 touchPointStates and modifiers 是事件發生時當前觸摸點狀態和鍵盤修飾符。
銷毀 QTouchEvent .
返迴此觸摸事件發源的觸摸設備。
返迴齣現事件的窗口內的目標對象。這通常是 QWidget 或 QQuickItem 。可能為 0 當沒有可用特定目標時。
返迴此事件所有觸摸點狀態的按位 OR。
返迴觸摸事件中包含的觸摸點列錶。
返迴齣現事件的窗口。當基於像 rawScreenPositions() 數據做全局-本地映射時會很有用,齣於性能原因,僅將全局位置存儲在觸摸事件中。