【QT】事件(鼠標、按鍵、定時器、窗口)

文章目錄

  • 1. 事件
    • 1.1 事件的介紹
    • 1.2 事件的處理
  • 2. 按鍵事件
  • 3. 鼠標事件
  • 4. 定時器
  • 5. 窗口事件

在這里插入圖片描述

1. 事件

1.1 事件的介紹

事件是應用程序內部或者外部產生的事情或者動作的統稱。
在 Qt 中使用?個對象來表示?個事件。所有的 Qt 事件均繼承于抽象類 QEvent。事件是由系統或者 Qt 平臺本?在不同的時刻發出的。

當用戶按下?標、鍵盤,或者是窗?需要重新繪制的時候,都會發出?個相應的事件。?些事件是在??操作時發出,如鍵盤事件、?標事件等,另?些事件則是由系統本身自動發出,如定時器事件。

常見的 Qt 事件如下:
在這里插入圖片描述

注意:事件不像信號槽一樣需要關聯,而是讓當前類,重寫某個事件處理函數,通過多態的機制實現

1.2 事件的處理

事件處理?般常用的?法為:重寫相關的 Event 函數。
在 Qt 中,?乎所有的 Event 函數都是虛函數,所以可以重新實現。

如:在實現?標的進?和離開事件時,直接重新實現 enterEvent() 和 leaveEvent() 即可。

enterEvent() 和 leaveEvent() 函數原型如下
在這里插入圖片描述

下面我們實現一個鼠標事件

先添加一個類,然后重寫enterEvent方法

在這里插入圖片描述

將我們創建的Label提升為自己的MyLabel

在這里插入圖片描述
此時,當我們的鼠標進入Label,就會顯示如下內容
在這里插入圖片描述

下面,我們使用事件,實現一個按鈕隨機移動的案例

在這里插入圖片描述

2. 按鍵事件

Qt 中的按鍵事件是通過 QKeyEvent 類來實現的。當鍵盤上的按鍵被按下或者被釋放時,鍵盤事件便會觸發。

在幫助文檔中查找 QKeyEvent 類如下:

在這里插入圖片描述

其中,鍵盤上的按鍵都已在枚舉類型Qt::key中羅列出來

在這里插入圖片描述

  1. 單個按鍵

示例:當某個按鍵被按下時,輸出:某個按鍵被按下了;

在這里插入圖片描述

  1. 組合按鍵

Qt::KeyboardModifier 中定義了在處理鍵盤事件時對應的修改鍵。在 Qt 中,鍵盤事件可以與修改鍵?起使用,以實現?些復雜的交互操作。
在這里插入圖片描述

在這里插入圖片描述

3. 鼠標事件

  1. 鼠標按下事件

在 Qt 中,?標按下是通過虛函數 mousePressEvent() 來捕獲的。mousePressEvent() 函數原型如下

?標左右鍵及滾的表?如下:

  • Qt::LeftButton ?標左鍵
  • Qt::RightButton ?標右鍵
  • Qt::MidButton ?標滾輪

在這里插入圖片描述

  1. 鼠標釋放事件

?標釋放事件是通過虛函數 mouseReleaseEvent() 來捕獲的。mouseReleaseEvent() 函數原型如下

在這里插入圖片描述

  1. 鼠標雙擊事件

?標雙擊事件是通過虛函數:mouseDoubleClickEvent() 來實現的。

  1. 鼠標移動事件

?標移動事件是通過虛函數:mouseMoveEvent() 來實現的。同時為了實時捕獲?標位置信息,需要通過函數 setMouseTracking() 來追蹤?標的位置

  • 隨便移動一下鼠標,就會產生出大量的鼠標移動事件,當你進行捕獲事件的時候,尤其是在這里再進行一些復雜邏輯的時候,程序負擔就很重,很容易產生卡頓之類的情況。
  • qt為了保證程序的流暢性,默認情況下不會對鼠標移動進行追蹤,鼠標移動的時候不會調用mouseMoveEvent。除非顯式告訴qt就要追蹤鼠標位置(即setMouseTracking() 設置為 true)。
  1. 鼠標滾輪事件

在 Qt 中,?標滾輪事件是通過 QWheelEvent 類來實現的。滾輪滑動的距離可以通過 delta() 函數獲取

其中返回值代表滾輪滑動的距離。正數表?滾輪相對于用戶向前滑動,負數表?滾輪相對于用戶向后滑動。

下面,我們實現一個Ctrl+鼠標滾動,調整字體大小的功能

在這里插入圖片描述
在這里插入圖片描述

4. 定時器

Qt 中在進?窗?程序的處理過程中,經常要周期性的執?某些操作,或者制作?些動畫效果,使?定時器就可以實現。

所謂定時器就是在間隔?定時間后,去執?某?個任務。定時器在很多場景下都會使?到,如彈窗?動關閉之類的功能等。

Qt中的定時器分為 QTimerEvent 和 QTimer 兩個類。

  • QTimerEvent類用來描述?個定時器事件。在使用時需要通過 startTimer() 函數來開啟?個定時器,這個函數需要輸??個以毫秒為單位的整數作為參數來表明設定的時間,它返回的整型值代表這個定時器。當定時器溢出時(即定時時間到達)就可以在 timerEvent() 函數中獲取該定時器的編號來進?相關操作。
  • QTimer類 來實現?個定時器,它提供了更?層次的編程接?,如:可以使?信號和槽,還可以設置只運行?次的定時器。
  1. QTimerEvent 類

示例:在UI界?上放置兩個 Label 控件,?個讓其1秒數字累加一次,?個讓其2秒數字累加?次

在這里插入圖片描述

  1. QTimer 類

通過QTimer與信號槽,實現按鈕點擊控制計時的效果。

在UI界?放置?個 Label 標簽,兩個按鈕,分別是 “開始” 和 “停止”,當點擊 “開始” 按鈕時,開始每隔1秒計數?次,點擊 “停?” 按鈕時,暫停計數。

在這里插入圖片描述

  1. 獲取系統日期及時間

在 Qt 中,獲取系統的?期及實時時間可以通過 QTimer 類 和 QDateTime類。

QDateTime類提供了字符串格式的時間。字符串形式的時間輸出格式由 toString() ?法中的 format 參數列表決定,可?的參數列表如下

在這里插入圖片描述

在這里插入圖片描述

5. 窗口事件

在 Qt 中,可以通過重寫 QWidget 的 moveEvent 和 resizeEvent 方法來處理窗口移動和調整大小的事件。這兩個事件分別在窗口位置改變和大小改變時被觸發。

在這里插入圖片描述

在這里插入圖片描述

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

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

相關文章

STM32固件升級設計——串口IAP升級(基于YMODEM協議)

目錄 一、功能描述 1、BootLoader部分: 2、APP部分: 二、BootLoader程序制作 1、分區定義 2、 主函數 3、YMODEM協議的實現 4、程序跳轉 三、APP程序制作 四、工程配置(默認KEIL5) 五、運行測試 結束語 概述 IAP&…

Cookie(搭配domain)/Session(搭配HttpServletRequest+HttpSession)

各位看官,大家早安午安晚安呀~~~如果您覺得這篇文章對您有幫助的話歡迎您一鍵三連,小編盡全力做到更好 歡迎您分享給更多人哦今天我們來學習:Cookie/Session1.Cookie/Session的簡述我們在講解HTTP協議的時候已經講解過Cookie了HTTP 協議自身是…

240.搜索二維矩陣Ⅱ

純暴力有點太唐了&#xff0c;不過竟然能過&#xff1b;還有行和列的表示我一直搞反了。。。class Solution {public boolean searchMatrix(int[][] matrix, int target) {for(int i 0 ;i<matrix.length;i){for(int j 0 ;j<matrix[0].length;j){if(matrix[i][j]target)…

【計算機組成原理】-CPU章節學習篇—筆記隨筆

計算機組成原理 CPU 章節知識點總結&#xff08;適用于 408 考研&#xff09;? 一、CPU 的功能與基本結構? 1.1 CPU 的功能? CPU&#xff08;中央處理器&#xff09;是計算機的核心部件&#xff0c;主要功能包括&#xff1a;? 指令控制&#xff1a;程序的順序執行&#xff…

公用測控裝置的功能

公用測控裝置在電力系統中廣泛應用于變電站的高壓開關單元、變壓器本體及低壓側等對象。它集測量、控制、保護于一體&#xff0c;確保電網的安全、穩定運行。公用測控裝置采用高性能硬件架構&#xff0c;如32位微控制器和獨立AD采樣技術&#xff0c;結合軟件算法&#xff0c;實…

數據庫|達夢DM數據庫配置實例步驟

哈嘍&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 最近因為一個信創項目&#xff0c;要使用達夢DM數據庫&#xff0c; 因此安裝了達夢DM數據庫來學習使用&#xff0c; 上一節中記錄了安裝Windows版本達夢DM數據庫的過程步驟&#xff0c; 這一節緊接著上一節《數據庫…

三十一、【高級特性篇】接口用例參數化與關聯:實現上下文數據傳遞

三十一、【高級特性篇】接口用例參數化與關聯:實現上下文數據傳遞 前言準備工作第一部分:后端數據模型調整1. 升級 `TestCase` 模型2. 生成并應用數據庫遷移3. 更新 `TestCaseSerializer`第二部分:后端測試執行器強化1. 修改 `execute_api_test_case` 函數2. 修改 Celery 任…

PCA通過“找最大方差方向”實現降維,本質是用更少的變量捕捉原始數據的主要模式

什么事 PCA(主成分分析) PCA(主成分分析)的原理與通俗舉例 PCA 是什么? PCA(Principal Component Analysis)是一種常用的降維算法,核心目標是將高維數據映射到低維空間,同時盡可能保留原始數據的關鍵信息(方差最大的方向)。 核心原理:找“最能代表數據的方向”…

JAVA synchronized關鍵字涉及的Monitor對象中 EntryList和WaitSet工作機制

在Java的synchronized同步機制中&#xff0c;Monitor對象的EntryList和WaitSet是兩個關鍵隊列&#xff0c;它們分別管理不同狀態的線程。下面我將詳細解釋它們的工作原理&#xff0c;并提供代碼示例說明。 EntryList&#xff08;鎖競爭隊列&#xff09; 作用機制 EntryList保…

js-day10

JS學習之旅-day101. 作用域1.1 局部作用域1.2 全局作用域1.3 作用域鏈1.4 JS垃圾回收機制&#xff08;GC&#xff09;1.5 閉包1.6 變量提升2. 函數進階2.1 函數提升2.2 函數參數2.3 箭頭函數3. 解構賦值3.1 數組解構3.2 對象解構4. 數組遍歷4.1 forEach4.2 filter1. 作用域 作…

智能數字式毫秒計在實際生活場景中的應用

在電力領域&#xff0c;SYN5307型數字毫秒表可精準監測特高壓變電站斷路器合閘時間差&#xff0c;定位繼電保護裝置信號延遲&#xff1b;工業自動化中&#xff0c;優化汽車焊裝線時序、提升半導體晶圓切割良率&#xff1b;科研計量上&#xff0c;助力量子通信同步校準&#xff…

Java面試基礎:概念

1. Java的特點跨平臺性&#xff1a;Java的 “編寫一次&#xff0c;運行無處不在” 是其最大的特點之一。Java編譯器將源代碼編譯成字節碼(bytecode)&#xff0c;該字節碼可以在任何安裝了Java虛擬機(JVM)的系統上運行。面向對象&#xff1a;Java是一門嚴格的面向對象編程語言&a…

PyQt5高級窗口控件詳解:停靠窗口、多文檔界面與滾動條

掌握PyQt5的高級窗口控件&#xff0c;讓你的GUI應用具備專業級的布局與交互體驗 在PyQt5應用開發中&#xff0c;高效管理窗口布局和實現復雜交互功能是提升用戶體驗的關鍵。本文將深入解析三個核心高級控件&#xff1a;停靠窗口&#xff08;QDockWidget&#xff09;、多文檔界面…

50天50個小項目 (Vue3 + Tailwindcss V4) ? | DrawingApp(畫板組件)

&#x1f4c5; 我們繼續 50 個小項目挑戰&#xff01;—— DrawingApp組件 倉庫地址&#xff1a;https://github.com/SunACong/50-vue-projects 項目預覽地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 Composition API&#xff08;<script setup>…

Eureka、Nacos、LoadBalance、OpenFeign?之間的區別聯系和協作 (附代碼講解)

這篇文章聊聊微服務里的這幾個老伙計&#xff1a;Eureka、Nacos、LoadBalance、OpenFeign。咱們做微服務開發&#xff0c;總會跟這幾個組件打交道&#xff1a;Eureka、Nacos、Spring Cloud LoadBalancer、OpenFeign。它們各司其職又互相配合&#xff0c;今天就把它們的關系、用…

JavaSE-繼承

繼承&#xff08;inheritance&#xff09;繼承的意義我們首先來看下面兩個類&#xff1a;public class Dog {public String name;public int age;public void eat(){System.out.println(this.name"正在吃飯");}public void bark(){System.out.println(this.name"…

第二屆虛擬現實、圖像和信號處理國際學術會議(VRISP 2025)

重要信息 官網&#xff1a;www.icvisp.net 時間&#xff1a;2025年8月1-3日 地點&#xff1a;中國-長沙 簡介 近年來&#xff0c;虛擬現實技術取得了顯著進步&#xff0c;與5G、云計算和物聯網等新一代信息技術的融合加速&#xff0c;推動了其在硬件、軟件和內容應用等方面…

SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分離版:整體布局、架構調整(二)

目錄 一、前言 二、后端調整 1.實體類調整 2.菜單相關接口 3.用戶相關接口 4.新增工具類 5.新增菜單樹返回類 6.配置類、攔截器 三、前端調整 1.請求調整 2.頁面布局、樣式調整 1.user.vue 2.index.vue 3.請求攔截 四、開發過程中的問題 五、附&#xff1a…

vue3官方文檔學習心得

這幾天抽空把vue3的文檔整個看了一遍。簡介 | Vue.js 23年寫過一個vue2的項目&#xff0c;24年寫了一個vue3的項目&#xff0c;頁面功能比較簡單&#xff0c;用幾個簡單的API&#xff0c;watch、watchEffect、ref、reactive就能實現的業務功能。 寫了幾年的react的&#xff0…

Pycharm恢復默認設置,配置導致復制粘貼等不能使用

在file 種找到manage IDE settings在manage IDE settings中找到restore default settings