PyQt學習隨筆 Qt事件類QEvent詳解

2021-09-28 14:27:21 字數 1540 閱讀 6094

qobjects 物件通過呼叫 qobject.event() 函式接收事件,可以通過在子類中重寫該函式來定義自己的事件處理**,並可以新增使用者自定義的事件型別,qwidget.event() 就是這樣乙個典型例子。

預設情況下,事件被分發給類似 qobject.timerevent() 和 qwidget.mousemoveevent() 這樣的事件處理函式。qobject.installeventfilter() 允許乙個物件攔截發往另乙個物件的事件。

基本的 qevent 只包含了乙個事件型別引數(qevent.type型別)和乙個"accept"標誌:

1、事件型別qevent.type為乙個列舉類,pyqt5.11中已經定義的取值請見《pyqt學習隨筆:qt事件qevent.type型別常量及其含義資料速查》,使用者自定義事件的取值範圍請見《pyqt學習隨筆:自定義qt事件可以使用的事件型別的常量值範圍》;

2、"accept"標誌表示事件接收物件是否需要該事件,需要的事件就會被接收物件處理,不需要的就會傳遞給物件的父元件物件。"accept"標誌可以通過accept()設定,通過ignore()被清除,它的值預設情況下是被設定了的,但應用中不能依賴這種預設設定,因為從qevent 派生的子類可能會選擇在其建構函式中清除它。

qevent 的子類包含了特定事件的額外引數。

qevent提供的方法包括:

1、構造方法:qevent( type),引數type為qevent.type的乙個值;

2、accept()方法,設定"accept"標誌為true,等同於setaccepted(true);

3、ignore()方法,清除"accept"標誌,等同於setaccepted(false);

4、isaccepted()方法,該方法返回"accept"標誌的標記值,為true就是標記置位了;

5、setaccepted(bool accepted)方法,用於設定或清除"accept"標誌;

6、spontaneous() 方法,如果事件**於應用外(即系統事件)則返回true,否則返回false.

7、type() 方法,返回事件物件的事件型別,其中qevent.type為乙個列舉類的乙個值;

8、registereventtype(hint = -1)方法,用於註冊和返回乙個使用者自定義事件型別,它是執行緒安全的函式。其中:

1>引數hint為註冊事件者期望的事件型別值,對應值如果沒有被定義成事件,則就會作為事件型別的type值,否則將使用qevent.user和 qevent.maxuser 之間(請參考《pyqt學習隨筆:自定義qt事件可以使用的事件型別的常量值範圍》)還沒有被註冊事件的乙個值. 如果 hint引數被指定且不介於qevent.user和 qevent.maxuser 之間將被忽略。

2>如果程式已經關閉或者qevent.user和 qevent.maxuser之間沒有可用值則返回-1,否則返回返回事件物件的事件型別

老猿python部落格文章目錄:

Qt 事件機制 學習

qt程式是事件驅動的,程式的每個動作都是由幕後某個事件所觸發.qt事件的發生和處理成為程式執行的主線,存在於程式整個生命週期。qt事件的型別很多,常見的qt的事件如下 鍵盤事件 按鍵按下和鬆開.滑鼠事件 滑鼠移動,滑鼠按鍵的按下和鬆開.拖放事件 用滑鼠進行拖放.滾輪事件 滑鼠滾輪滾動.繪屏事件 重繪...

pyqt5學習(四)事件和訊號

顧名思義 事件就是執行的東西,訊號就和觸發類似吧,是一種動作 qlcdnumber類 類似於qlable是一種顯示標籤,一般好像多用於顯示時間 qslider類 滑動條類 qtcore 包含了核心的非gui的功能。主要和時間 檔案與資料夾 各種資料 流 urls mime類檔案 程序與執行緒一起使用...

QByteArray類學習(QT常見類學習1)

qbytearray類提供了位元組陣列,包含於 標頭檔案中,從 q3cstring 類繼承而來。qbytearray可以儲存 raw bytes 和傳統的 8 bits 的字串,都是以 0 結尾的,使用比 char 更方便qstring也可以儲存字串資訊,但通常以 16 bits 形式unicode...