当前位置: 首页 > news >正文

【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt系统相关 | Qt事件 | 事件的介绍及基本概念

文章编号:Qt 学习笔记 / 59

文章目录

  • Qt系统相关 | Qt事件 | 事件的介绍及基本概念
    • 一、Qt事件介绍
      • 1. 事件简介
      • 2. 事件的处理
    • 二、Qt事件分类
      • 1. 事件分类
      • 2. 常见的事件叙述


一、Qt事件介绍

1. 事件简介

在Qt中,事件是指发生在应用程序中的各种动作或事物,如鼠标点击、键盘输入、窗口关闭等。Qt的事件机制基于事件循环,即应用程序不断地从操作系统接收事件并进行处理。

Qt中的事件通过事件对象(QEvent)来表示,每个事件对象都有一个类型(Type)和一些特定的属性。当事件发生时,Qt会将事件对象发送给相关的对象进行处理。需要注意的是,Qt支持事件的继承和重载,开发者可以根据自己的需求来重写事件处理函数。

在Qt中,事件的处理通常是通过重写事件处理函数来实现的。每个QObject派生类都有一个事件处理函数(event()函数),开发者可以在该函数中实现对特定事件的处理逻辑。例如,可以在QWidget的event()函数中处理鼠标点击事件、键盘事件等。

2. 事件的处理

事件处理⼀般常⽤的⽅法为:重写相关的 Event 函数。
在 Qt 中,⼏乎所有的 Event 函数都是虚函数,所以可以重新实现。如:在实现⿏标的进⼊和离开事件时,直接重新实现 enterEvent() 和 leaveEvent() 即可。
enterEvent() 和 leaveEvent() 函数原型如下:
在这里插入图片描述
在这里插入图片描述


二、Qt事件分类

1. 事件分类

在这里插入图片描述
QMouseEvent包含了鼠标事件的各种信息,例如鼠标的位置、按下的按键类型、按下的按键的状态等。它可以用于捕捉鼠标的按下、释放、移动等事件,并对这些事件做出相应的处理。

QKeyEvent包含了键盘事件的各种信息,例如按下的键值、按下的键的状态、是否按下修饰键(如Shift、Ctrl等)等。它可以用于捕捉键盘的按下、释放、按住等事件,并对这些事件做出相应的处理。

QTimerEvent包含有关定时器ID和定时器类型的信息。它可用于根据定时间隔触发特定操作或更新用户界面。

QDropEvent是一个在Qt应用程序中拖放操作发生时发送给QDropEvent接收者的事件。它包含关于拖放操作的各种信息,包括拖动的数据、拖放的位置和操作的类型。

QInputEvent是Qt中用于表示输入事件的基类。它是一个抽象类,不能直接实例化,而是通过其具体的子类来表示不同类型的输入事件,如键盘事件、鼠标事件等。

QPaintEvent是Qt中用于表示绘图事件的类。它是QObject类的子类,用于通知部件需要重新绘制自己。当部件需要进行绘制时,Qt会自动创建一个QPaintEvent对象,并将其发送给部件的paintEvent()函数进行处理。在paintEvent()函数内部,可以通过调用部件的绘图函数,如QPainter的绘图函数,来完成具体的绘制操作。

2. 常见的事件叙述

事件名称描述
鼠标事件鼠标左键、鼠标右键、鼠标滚轮,鼠标的移动,鼠标按键的按下和松开
键盘事件按键类型、按键按下、按键松开
定时器事件定时时间到达
进⼊离开事件鼠标的进⼊和离开
滚轮事件鼠标滚轮滚动
绘屏事件重绘屏幕的某些部分
显示隐藏事件窗口的显示和隐藏
移动事件窗口位置的变化
窗口事件是否为当前窗口
⼤小改变事件窗口⼤小改变
焦点事件键盘焦点移动
拖拽事件⽤鼠标进行拖拽

在这里插入图片描述

相关文章:

【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt系统相关 | Qt事件 | 事件的介绍及基本概念 文章编号:Qt…...

具身智能特点及实现路线

多模态——多功能的“小脑” 人类具有眼耳鼻舌身意,说明对于物理世界的充分感知和理解,是意识和智慧的来源。而传统AI更多的是被动观测,主要是“看”(计算机视觉)和“读”(文本NLP)&#xff0c…...

重温react-04

兄弟组件之间通信 兄弟1 import React, { Component } from react import pubsub from ./pubsub export default class learnReact01 extends Component {render() {return (<div>我是兄弟1<button onClick{this.clickMessage}>向兄弟2发信息</button><…...

lock-锁的概念

锁的简介 锁是计算机协调多个进程或线程并发访问某一资源的机制&#xff08;避免发生资源争抢&#xff09; 在并发环境下&#xff0c;多个线程会对同一个资源进行争抢&#xff0c;可能会导致数据不一致的问题。为了解决这一问题&#xff0c;需要通过一种抽象的锁来对资源进行…...

Docker 可用镜像源

当使用 docker 发现拉取不到镜像时&#xff0c;可以编辑 /etc/docker/daemon.json 文件&#xff0c;添加如下内容&#xff1a; 这文章不涉及政治&#xff0c;不涉及敏感信息&#xff0c;三番五次的审核不通过&#xff0c;一删再删&#xff0c;只好换图片了。 重新加载服务配置…...

MySQL 搭建主从报错 1236

错误信息&#xff1a; Last_IO_Error: Got fatal error 1236 from source when reading data from binary log: Could not find first log file name in binary log index file 大致内容&#xff1a; MySQL 在尝试从二进制日志&#xff08;binary log&#xff09;中读取数据…...

华为OD机试真题2024版-求幸存数之和

题目描述\n给一个正整数列 nums,一个跳数 jump,及幸存数量 left。运算过程为:从索引为 0 的位置开始向后跳,中间跳过 J 个数字,命中索引为 J+1 的数字,该数被敲出,并从该点起跳,以此类推,直到幸存 left 个数为止。然后返回幸存数之和。\n约束: 1、0 是第一个起跳点。…...

Python - 各种计算器合集【附源码】

计算器合集 一&#xff1a;极简版计算器二&#xff1a;简易版计算器三&#xff1a;不简易的计算器四&#xff1a;还可以计算器 一&#xff1a;极简版计算器 运行效果&#xff1a; import tkinter as tk import tkinter.messagebox win tk.Tk() win.title("计算器")…...

【已解决】better-scroll在PC端如何开启鼠标滚动以及如何始终显示滚动条

总结 需要安装插件 mouse-wheel 和 scrollbar 在PC端如何开启鼠标滚动? 需要安装官方提供的滚动插件&#xff1a;mouse-wheel https://better-scroll.github.io/docs/zh-CN/plugins/mouse-wheel.html 为了开启鼠标滚动功能&#xff0c;你需要首先引入 mouseWheel 插件&…...

AJAX 综合案例-day2

Bootstrap 弹框 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作 步骤&#xff1a; 1. 引入 bootstrap.css 和 bootstrap.js 2. 准备 弹框标签 &#xff0c;确认结构 3. 通过 自定义属性 &#xff0c;控制弹框的 显示 和 隐藏 1. 通过属性…...

【Esp32连接微信小程序蓝牙】附Arduino源码《 返回10007 相同特征id冲突问题》

前言 最近接了一个外包&#xff0c;发现了esp32连接小程序会有很多bug&#xff0c;所以接下来会慢慢更新解决方案&#xff0c;还是需要多接触项目才能进步呀兄弟们&#xff01; 附上uuid的生成链接&#xff1a; // See the following for generating UUIDs: // https://www.uu…...

并发控制技术

事物的隔离性实现主要依赖于多种并发控制技术,这些技术确保在并发执行的事物中,一个事物的操作不会被其他事物干扰。并发控制技术按照其对可能冲突的操作采取的不同策略可以分为乐观并发控制和悲观并发控制两大类。 基于封锁的并发控制 对于并发可能冲突的操作,比如读-写,…...

什么是网段

一、A类地址的网段&#xff1a; 情况1&#xff1a;最小的网段就是xxx.0.0.0&#xff0c;直接使用第一段的网络地址做网段。 情况2&#xff1a;如果希望网段允许的主机数量的范围缩小&#xff0c;扩大网段值即可&#xff0c;xxx.xxz.zzz.zzz&#xff0c;比如xxx.xxx.xzz.zzz&…...

PHP和Mysql前后端交互效果实现

一、连接数据库基本函数 mysqli_connect(); 作用&#xff1a;创建数据库连接&#xff0c;打开一个新的mysql的连接。传参顺序&#xff1a;数据库地址、数据库账号、数据库密码 <?phpecho mysqli_connect("localhost",root,root) ?> /*结果&#xff1a;F…...

vue小总结

知识总结 【 1 】es6 语法总结 # let 定义变量 # const定义常量 ------块级作用域---- # var 以后尽量少用&#xff0c;函数作用域var 在 JavaScript 中是函数作用域或全局作用域。而 let 和 const 是块级作用域。 // 使用 var 声明全局变量 var globalVar "Im a globa…...

RapidLayout:中英文版面分析推理库

引言 继上一篇文章之后&#xff0c;我这里想着将360发布的版面分析模型整合到现有的rapid_layout仓库中&#xff0c;便于大家快速使用。 不曾想到&#xff0c;我这整理工作越做越多了&#xff0c;好在整体都是往更好方向走。 起初&#xff0c;rapid_layout项目是在RapidStru…...

postman 工具下载安装使用教程_postman安装

本文讲解的是postman工具下载、Postman安装步骤、postman下载、postman安装教程。Postman是一款流行的API测试工具&#xff0c;它提供了一个用户友好的界面&#xff0c;用于发送和测试API请求&#xff0c;并且可以轻松地按需管理和组织请求。 这使得开发人员和测试人员能够更高…...

【数学建模】——【新手小白到国奖选手】——【学习路线】

专栏&#xff1a;数学建模学习笔记 目录 ​编辑 第一阶段&#xff1a;基础知识和工具 1.Python基础 1.学习内容 1.基本语法 2.函数和模块 3.面向对象编程 4.文件操作 2.推荐资源 书籍&#xff1a; 在线课程&#xff1a; 在线教程&#xff1a; 2.数学基础 1.学习内…...

CSS文本超限后使用省略号代替

方案一&#xff1a; 只显示一行&#xff0c;超限后使用省略号代替 .detail {overflow: hidden;text-overflow: ellipsis;white-space: nowrap; }方案二&#xff1a; 显示多行&#xff0c;到最后一行还没有显示完&#xff0c;则最后一行多出来的部分使用省略号代替。 .detai…...

多线程下JVM内存模型 和 volatile关键字

1、线程的概念 线程&#xff08;thread&#xff09;是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务…...

Uniapp实现页面滚动Tab吸顶,点击tab内容滚动到对应tab内容位置

思路&#xff1a;运用uniapp原生提供方法uni.createSelectorQuery()获取滚动对应节点的信息&#xff0c;即节点距离页面顶部的距离&#xff0c;再通过uniapp原生监听页面滚动事件onPageScroll&#xff0c;获取页面内容滚动的高度&#xff0c;二者相加即定位到对应节点的滚动距离…...

在Elasticsearch中-SpaceJam一个全文搜索的实例

在Elasticsearch中进行全文搜索通常涉及几个步骤&#xff1a;创建索引、定义映射、索引文档、执行搜索查询。下面我将通过一个名为"SpaceJam"的虚构实例来演示如何进行全文搜索。 ### 步骤 1: 创建索引 首先&#xff0c;我们需要创建一个索引。在这个例子中&#x…...

Microsoft Edge浏览器安装crx拓展插件教程

1、首先打开edge浏览器&#xff0c;点击顶部地址栏。 2、在地址栏中输入"edge://flags/#extensions-on-edge-urls"并按下回车。2、在地址栏中输入"edge://flags/#extensions-on-edge-urls"并按下回车。 3、进入后&#xff0c;将图示选项改为“已禁用”。 …...

陈晓婚前婚后大变样

陈晓婚前婚后大变样&#xff1f;陈妍希揭秘甜蜜与现实的碰撞在娱乐圈的星光璀璨中&#xff0c;有一对夫妻总是津津乐道&#xff0c;那就是陈晓和陈妍希。他们的爱情故事&#xff0c;从荧幕到现实&#xff0c;一直备受关注。然而&#xff0c;近日陈妍希在节目中透露&#xff0c;…...

Linux sudo -i取消密码的方法

直接修改 /etc/sudoers 文件来实现 sudo -i 无需密码的配置。以下是具体步骤&#xff1a; 步骤 打开终端并使用 visudo 命令编辑 /etc/sudoers 文件 使用 visudo 编辑 sudoers 文件是推荐的方法&#xff0c;因为它会在保存前进行语法检查&#xff0c;防止出现配置错误。 sudo …...

PMP考试多少分才算合格通过?

PMP是美国颁发的专业资格认证,其考试采用的是国外的评分体系。考试内容被划分为3大部分:人、过程和商业环境,每个部分所占的权重不同。考试形式为180个单选和多选题,其中有25题不计分。考试可能会抽到错误或未回答的题目,也可能抽到正确答题的题目。最终根据NBTA的4个等级进行综…...

原生js写数据自动纵向滚动,鼠标移入后停止滚动可手动滚动,鼠标移出转自动

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>滚动页面</title><link rel"styleshee…...

板凳----Linux/Unix 系统编程手册 25章 进程的终止

25.1 进程的终止&#xff1a;_exit()和exit() 440 1. _exit(int status)&#xff0c; status 定义了终止状态&#xff0c;父进程可调用 wait 获取。仅低8位可用&#xff0c;调用 _exit() 总是成功的。 2.程序一般不会调用 _exit()&#xff0c; 而是调用库函数 exit()。exit() …...

若依Ruoyi-vue和element admin的区别,该如何选择。

提到中后台的前端框架&#xff0c;每个人都能列举出很多&#xff0c;这其中提及率比较高的就是Ruoyi和element admin两款&#xff0c;很多小伙伴分不清二者&#xff0c;本文为大家详细讲解一下。 一、若依Ruoyi-vue是什么&#xff1f; 若依Ruoyi-Vue是一款基于 Vue.js 开发的…...

Sklearn之朴素贝叶斯应用

目录 sklearn中的贝叶斯分类器 前言 1 分类器介绍 2 高斯朴素贝叶斯GaussianNB 2.1 认识高斯朴素贝叶斯 2.2 高斯朴素贝叶斯建模案例 2.3 高斯朴素贝叶斯擅长的数据集 2.3.1 三种数据集介绍 2.3.2 构建三种数据 2.3.3 数据标准化 2.3.4 朴素贝叶斯处理数据 2.4 高斯…...

javaweb可以做网站吗/品牌营销策划方案怎么做

1、打开激活窗口 2、选择 Activate new license with License server &#xff08;用license server 激活&#xff09; 3、在 License sever address 处填入 https://jetlicense.nss.im/ 4、点击 Activate 进行认证 还有一种方法比较麻烦&#xff0c;就不提及了...

网站建设用哪种语言最好/湘潭网站设计

在请求的时候,请求头里肯定要带着token,所以在登录成功以后,就要先把token存起来 //拿到商家的token,存起来let token"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqaWFuZyIsInRlbmFudElkIjoiNDAiLCJleHAiOjE2MjM4MTM0MDMsImlhdCI6MTYyMjUxNzQwM30.L-HvbqXLp9xgYRg…...

做网站用什么软件免费/seo项目

系统资源监控工具系统资源监控工具top命令top的输出详解htop命令一、安装htop命令二、操作htop的交互式页面glances命令一、安装glances命令二、操作glances命令三、glances的web服务功能四、glances的cs模式系统资源监控工具 Linux中&#xff0c;有很多系统监控工具可以用来监…...

酒店网站开发合同/电商网站前端页面内容编写

曾经沧海难为水 信息如水 压力如潮 功能实现阶段&#xff0c;我们对得要处理的信息分析得很细致&#xff0c;很透彻&#xff0c;所谓细如丝&#xff0c;透如水。然而&#xff0c;到了产品的阶段&#xff0c;要处理的信息却如同潮洪而至&#xff0c;原本的假设预想&#xff0c;通…...

影视网站怎么做优化/seo高级优化方法

安装版本&#xff1a;5.5.32下载地址&#xff1a;wgethttp://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-5.5/mysql-5.5.32.tar.gz 安装过程&#xff1a;1、安装依赖yuminstall ncurses-devel –y 用于终端操作的开发包2、安装编译工具yum install cmake -y3、添加用户usera…...

上海建设网站公司/软文广告营销

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…...