Qt之深入理解gesture

2021-05-23 19:45:09 字數 1369 閱讀 3200

qgesturemanager::qgesturemanager(qobject *parent )

: qobject(parent), state(notgesture), m_lastcustomgestureid(0)

複製**

上面的**很簡單這裡我只簡單說說,registergesturerecognizer就是用來註冊gesture recognizer的,剛開始說的五個gesture在這裡都註冊了。

我們再了看看registergesturerecognizer函式:

qt::gesturetype qgesturemanager::registergesturerecognizer(qgesturerecognizer *recognizer)

//code a

//這裡如果發現你的gesturetype是customgesture則會

//返回qt::gesturetype(qt::customgesture + m_lastcustomgestureid)

//即在qt::customgesture基礎上加乙個數字,如果是註冊第乙個的自定義的gesture,

//這裡的m_lastcustomgestureid就是1,再註冊就加2,以此類推

//這裡對我們理解自定義gesture很有幫助:)

qt::gesturetype type = dummy->gesturetype();

if (type == qt::customgesture)

m_recognizers.insertmulti(type, recognizer);

delete dummy;

return type; }

複製**

上 面**中注釋的應該比較全,這裡我只就code a部分說一下,如果我自定義乙個gesture時,無需管它的gesture型別,也不用重新實現它的gesturetype方法,預設的就是 qt::customgesture,這裡的你的gesture型別id你可以通過呼叫 qgesturerecognizer::registerrecognizer方法的返回值來獲得,也可以根據上面的**在 qt::customgesture基礎上加上相應的數字來得到。

說完這些,讓我們來看看有關gesture的事件傳遞的過程:

當你通過呼叫qwidget ::grabgesture來截獲相應的gesture手勢時

如果你想截獲某個手勢,你需要呼叫qwidget::grabgesture方法來截獲相應的手勢型別,我們來看看qwidget::grabgesture方法原始碼:

void qwidget::grabgesture(qt::gesturetype gesture, qt::gestureflags flags)

複製**

Qt之深入理解外掛程式系統

簡述 要開發乙個成功的系統,外掛程式是必經之路。1.對於小朋友來說,積木是木頭塑料,用這些小積木可以拼成房子 動物。2.對於建築工人來說,積木是零磚碎瓦,用這些小積木可以構建高樓大廈。3.對於程式設計師來說,積木可以看做是外掛程式 更高階一點 用這些小積木可以搭建大系統。很多人認為外掛程式化很複雜,...

深入理解Qt訊號槽

訊號槽機制是觀察者模式的一種應用,達到訂閱 發布的效果。與之類似的有c 中的委託機制,只是寫法有所不同。訊號槽實現的主體是connect函式,常有兩種寫法 利用signal slot巨集和使用 類名 函式的結構 需要注意connect除了可以連線訊號和槽,還可以連線訊號與訊號 單個訊號與多個槽 多個...

QT執行緒之QObjects 深入理解

跨執行緒的訊號 槽 qobject和所有它的子類是非執行緒安全的。這包括整個的事件投遞系統。需要牢記的是,當你正從別的執行緒中訪問物件時,事件迴圈可以向你的qobject子類投遞事件。假如你呼叫乙個不生存在當前執行緒中的qobject子類的函式時,你必須用mutex來保護qobject子類的內部資料...