QT(事件)

一、事件

前言

事件是QT的三大機制之一,一定程度上信號和槽也屬于事件的一種
QT中的事件指哪些:窗口關閉,窗口顯示,敲擊鍵盤,點擊鼠標左鍵、鼠標右鍵、鼠標滾輪,文件拖放等等

1、事件循環

QT中的所有事件,都是放在 "事件循環" 中,被反復執行的

本質上不是一次性的操作,而是這些事件,這些函數,被反復觸發,反復執行,那么就會出現在事件循環中,被反復執行。

2、事件的本質

在QT中,所有的事件,本質上都是受保護的虛函數,發生了對應的事件,就會調用對應的受保護的函數。
所有事件函數中,都有一個事件對象,用來維護并記錄事件發生的過程中所產生的數據,我們可以通過這個對象,獲取事件過程中所產生的數據

void 事件(事件對象 ev){我們可以通過 "事件對象" ev 來獲取事件中的數據
}

3、關閉事件和隱藏事件

1)關閉事件

事件函數:virtual void closeEvent(QCloseEvent* ev);
事件對象:QCloseEvent* ev :關閉事件中基本不產生數據,所以沒啥用
發生條件:1.點擊窗口的關閉鍵2.手動調用函數close();關閉窗口
關閉事件的特點:1.在關閉事件中,會先關閉窗口,再調用析構函數2.只有將所有的窗口都隱藏或關閉時,并且最后一個事件時關閉事件時,才會調用析構函數,并且是調用所有關閉和隱藏了的窗口的析構函數3.關閉事件是通過隱藏事件實現的

2)隱藏事件

事件函數:virtual void hideEvent(QHideEvent* ev);
事件對象:隱藏事件不產生數據,不需要調用
觸發條件:1.點擊窗口的隱藏鍵2.手動調用函數hide();隱藏窗口
隱藏事件的特點:1.隱藏事件不會調用析構函數2.如果操作的最后一個窗口觸發的事件,是隱藏事件,則不論前面有沒有關閉事件,都不會調用析構函數

3)關閉事件和隱藏事件的區別

無論是關閉事件還是隱藏事件,現象都是將窗口給隱藏
區別在于:
隱藏事件,無論如何都不會調用析構函數
關閉事件,會有條件的調用析構函數

4、鍵盤事件

1)鍵盤事件的槽函數

事件函數:virtual void keyPressEvent(QKeyEvent* ev);      //按下事件virtual void keyReleaseEvent(QKeyEvent* ev);    //釋放事件
事件對象:獲取鍵盤上按下的按鍵的值以及功能
觸發條件:按下、釋放鍵盤上的按鍵

2)如何獲取鍵盤按下的按鍵值

QString QKeyEvent::text() const
功能:以字符串類型,返回鍵盤敲擊的值

3)如何獲取鍵盤按下的所有按鍵(包括功能按鍵)

int QKeyEvent::key() const
功能:可以獲取鍵盤上按下的每一個按鍵,包括功能按鍵
返回值:是一個枚舉,每個枚舉值代表按下的不同按鍵

4)如何獲取鍵盤按下的組合鍵

Qt::KeyboardModifiers modifiers() const
功能:返回按下的組合鍵,如果按下的不是組合鍵,就返回noModifier

5)鍵盤事件的重復觸發機制

鍵盤的重復觸發機制是指,如果按鍵按住,不抬起釋放,就會重復觸發鍵盤的 "按下" - "抬起" 事件,直到按鍵真正被釋放。在鍵盤事件中有一個函數可以檢測按鍵是否正在被按下,就是isAutoRepeat()

函數原型:bool QKeyEvent::isAutoRepeat() const
功能:檢查是否有按鍵正在被按下,如果有就返回True,如果沒有就返回False

5、事件過濾器

QT當中事件的流轉過程如下

1. 發生物理事件;
2. 發生事件的窗口捕獲該事件;
3. 將該事件交給事件過濾器,經過各種過濾以后;
4. 派發給目標窗口;
當前鼠標焦點在哪個窗口,就會派發事件給哪個窗口
如果所有窗口都不具備焦點,則派發個事件發生的窗口
5. 接收到事件的窗口調用對應的事件函數。

1)label文本框

label對象,不會被事件過濾器派發事件

2)將ui界面中某個窗口的類型,修改成我們自己寫的類型

3)手動將事件派發個目標窗口

4)

6、鼠標事件

1)鼠標左鍵事件

2)鼠標右鍵事件

(1)向右鍵菜單欄中添加選項

7、拖放事件

1)拖放事件的觸發

2)拖入事件的代碼

3)釋放事件的觸發

4)釋放事件的代碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918909.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918909.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918909.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于 Vue2+Quill 的富文本編輯器全方案:功能實現與樣式優化

在 Web 開發中,富文本編輯器是內容管理系統、博客平臺等應用的核心組件。本文將詳細介紹如何基于 Vue 和 Quill 構建一個功能完善、樣式精美的富文本編輯器,重點解決字體字號選項冗長、樣式不美觀及功能完整性問題,提供可直接部署使用的完整方…

C#內嵌字符串格式化輸出

內嵌字符串格式輸出 double speedOfLight 299792.458;System.Globalization.CultureInfo.CurrentCulture System.Globalization.CultureInfo.GetCultureInfo("nl-NL"); string messageInCurrentCulture $"The speed of light is {speedOfLight:N3} km/s.&quo…

ThreeJS程序化生成城市大場景底座(性能測試)

一、簡介基于矢量geojson數據構建建筑、植被、道路等,實現城市場景底座。涉及渲染的性能優化無非就是眾所周知的那些事兒。視錐剔除、mesh合并、減少draw call、四叉樹、八叉樹、數據壓縮、WebWorker、著色器優化等。下面是對東莞市數十萬建筑以及海量3D樹的渲染測試…

?電風扇離線語音芯片方案設計與應用場景:基于 8 腳 MCU 與 WTK6900P 的創新融合

?電風扇離線語音芯片方案設計與應用場景:基于 8 腳 MCU 與 WTK6900P 的創新融合一、引言在智能家居領域蓬勃發展的當下,用戶對于家電產品的智能化和便捷性需求日益增長。傳統的電風扇控制方式,如按鍵操作或遙控器控制,在某些場景…

(第四篇)spring cloud之Consul注冊中心

目錄 一、介紹 二、安裝 三、整合代碼使用 1、創建服務提供者8006 2、創建服務消費者80 3、Eureka、zookeeper和consul的異同點 一、介紹 Consul 是一套開源的分布式服務發現和配置管理系統,由 HashiCorp 公司用 Go 語言開發。它提供了微服務系統中的服務治理…

NAT 和 PNAT

核心概念與背景 IPv4 地址枯竭: IPv4 地址空間有限(約 42.9 億個),早已分配殆盡。NAT/PNAT 是緩解此問題的最重要、最廣泛部署的技術。私有 IP 地址空間: IANA 保留了三個 IPv4 地址段專供私有網絡內部使用&#xff08…

windows系統創建FTP服務

一丶開啟FTP功能 控制面板->程序與功能->啟用或關閉windows功能->Internet Information Services->勾選FTP服務器二丶創建FTP服務 1丶控制面板->windows工具->Internet Information Services (IIS) 管理器2丶網站->添加FTP站點->輸入對應內容3丶點擊新…

DeepSeek補全IBM MQ 9.4 REST API 執行命令的PPT

DeepSeek補全了我在網上找到的PPT的一頁內容,幫了大忙了。人機協同,人工智能可以協助人更好的做事。下面的內容是講解IBM MQ REST API 執行IBM MQ命令的PPT: MQSC for REST Tailored RESTful support for individual MQ objects and actions are in the …

【swift】SwiftUI動畫卡頓全解:GeometryReader濫用檢測與Canvas繪制替代方案

SwiftUI動畫卡頓全解:GeometryReader濫用檢測與Canvas繪制替代方案一、GeometryReader的性能陷阱深度解析1. 布局計算機制2. 動畫中的災難性表現二、GeometryReader濫用檢測系統1. 靜態代碼分析器2. 運行時性能監控三、Canvas繪制優化方案1. 基礎Canvas實現2. 性能優…

悄悄話、合唱層次感:聲網空間音頻解鎖語聊新玩法

作為語聊房主播,我曾覺得線上相聚差點意思。多人開麥時聲音混雜,互動缺真實感,觀眾留不住,自己播著也沒勁。直到平臺接入聲網空間音頻,一切改觀,觀眾說像在真實房間聊天,留存率漲 35%&#xff0…

【工具】多圖裁剪批量處理工具

文章目錄工具核心功能亮點1. 批量上傳與智能管理2. 精準直觀的裁剪控制3. 一鍵應用與批量處理為什么這個工具能提升你的工作效率?統一性與一致性保證節省90%以上的時間專業級功能,零學習成本實際應用場景電子商務攝影工作內容創作教育領域技術優勢完全在…

如何提升需求分析能力

要系統性地提升需求分析能力,核心在于實現從一個被動的“需求記錄員”,向一個主動的、價值驅動的“業務問題解決者”的深刻轉型。要完成這一蛻變,必須在五個關鍵領域進行系統性的修煉與實踐:培養“穿透表象”的系統思維能力、掌握…

另類的pdb恢復方式

cdb中有pdb1,pdb2 需求:希望將在線熱備份pdb1的備份集a,恢復成pdb3,使得cdb中有pdb1,2,3 參考到的:RMAN備份恢復典型案例——跨平臺遷移pdb - 墨天輪 ORA-65122: Pluggable Database GUID Conflicts With The GUID Of An Existi…

HarmonyOS 實戰:用 @Observed + @ObjectLink 玩轉多組件實時數據更新

摘要 在鴻蒙(HarmonyOS)應用開發中,實時數據更新是一個繞不開的話題,尤其是在你封裝了很多自定義組件、需要多個組件之間共享和同步數據的場景里。過去我們可能會依賴父子組件直接傳參或全局狀態管理,但這樣寫會讓代碼…

云原生俱樂部-雜談2

說實話,雜談系列可能會比較少,因為畢竟大部分時間都是上的線上,迄今為止也是,和雷老師與WH的交流不是很多。這個系列僅僅是我在做其他筆記部分無聊的時候來寫的,內容也沒有規劃過,隨想隨寫。倒不是時間太多…

波浪模型SWAN學習(1)——模型編譯與波浪折射模擬(Test of the refraction formulation)

SWAN模型編譯與波浪折射模擬(Test of the refraction formulation)編譯過程算例簡介參數文件文件頭(HEADING)計算區域和網格地形數據邊界條件物理模塊設置輸出設置執行參數模擬結果由于工作原因,最近開始接觸波浪模型&…

更換cmd背景圖片

打開cmd 右擊頂部,選擇設置選擇命令提示符,外觀選擇背景圖像路徑更改成自己的圖片,然后右下角保存 設置成功

基于RobustVideoMatting(RVM)進行視頻人像分割(torch、onnx版本)

發表時間:2021年8月25日 項目地址:https://peterl1n.github.io/RobustVideoMatting/ 論文閱讀:https://hpg123.blog.csdn.net/article/details/134409222 RVM是字節團隊開源的一個實時人像分割模型,基于LSTMConv實現,…

強制從不抱怨環境。

警世俗語:強者逆襲心法(句句穿心)環境是泥潭?那就讓它開出金蓮! —— 抱怨是弱者的裹腳布,行動是強者的登天梯。爛泥里也能種出搖錢樹,關鍵看你敢不敢下手挖!老天爺發牌爛&#xff1…

MC0439符號統計

碼蹄集OJ-符號統計 MC0439?符號統計 難度:黃金 時間限制:1 秒 占用內存:256 M 收藏 報錯 在華容道放曹的緊張時刻,小碼哥接到了一個看似微不足道卻至關重要的任務:解讀一條僅由小寫英文字母組成的神秘字符串 s&#…