Qt中的鼠標事件
阿新 • • 發佈:2017-10-18
及其 分享 必須 不能 幫助文檔 描述 應用程序 平臺 發送 1、圖形界面應用程序的消息處理模型
特點:
(2)GUI應用程序的事件處理方式
- 基於操作系統才能運行
- GUI應用程序提供的功能必須由用戶觸發
- 用戶操作界面時操作系統是第一個感知的
- 系統內核的消息通過事件處理轉變成QT的信2、Qt中的事件處理
- Qt事件是一個QEvent(或子類)的對象
- 有時一個事件包含多個事件類型,比如鼠標事件又可以分為鼠標按下、雙擊、和移動多種操作
- 事件類型由QEvent類的枚舉型QEvent::Type來表示,可由幫助文檔進行查詢
- Qt事件用於描述程序內部或外部發生的對應動作(描述的是操作系統發生來的消息,一個系統消息對應著一個消息事件)
- 任意QObject對象
QEvent及其子類對象
note:QEvent子類可以表示一個事件,但並不能處理這個事件
Qt 程序需要在main()函數創建一個QApplication對象,然後調用它的exec()函數。這個函數就是開始 Qt 的事件循環。在執行exec()函數之後,程序將進入事件循環來監聽應用程序的事件。當事件發生時,Qt 將創建一個事件對象。Qt 中所有事件類都繼承於QEvent。在事件對象創建完畢後,Qt 將這個事件對象傳遞給QObject的event()函數。event()函數並不直接處理事件,而是將這些事件對象按照它們不同的類型,分發給不同的事件處理器(event handler)。如上所述,event()函數主要用於事件的分發
- Qt事件產生後會立即被分發到QWidget對象(QObject的子類)
- QWidget對象其內部會有一個event(QEVent*)函數被調用,進行事件處理
- event()根據事件類型調用不同的事件處理函數(默認的子函數)
- 在事件處理函數中發送Qt中預定義的信號
- 調用信號關聯的槽函數
(3) QPushButton事件處理分析
①接收到鼠標事件
②QApplication調用QObject::event(QEvent*)成員函數來處理,進行事件的分派。
③調用mouseReleaseEvent(QMouseEvent*)成員函數
④QPushButton調用click()成員函數
⑤觸發信號SIGNAL(clicked())
Qt中的鼠標事件