【QT】——事件处理系统

这篇具有很好参考价值的文章主要介绍了【QT】——事件处理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.事件介绍

2.QT事件的产生

3.事件处理函数

3.1鼠标事件

3.2键盘事件

3.3窗口重绘事件

3.4窗口关闭事件

3.5窗口大小变化事件

4. 重写事件处理函数


1.事件介绍

QT 程序是事件驱动的, 程序的每个动作都是由内部某个事件所触发。QT 事件的发生和处理 成为程序运行的主线,存在于程序整个生命周期。

常见的 QT 事件类型如下:

  • 键盘事件: 按键按下和松开
  • 鼠标事件: 鼠标移动,鼠标按键的按下和松开
  • 拖放事件: 用鼠标进行拖放
  • 滚轮事件: 鼠标滚轮滚动
  • 绘屏事件: 重绘屏幕的某些部分
  • 定时事件: 定时器到时,比如设定一个定时器,定时器到时,则触发定时事件
  • 焦点事件: 键盘焦点移动
  • 进入和离开事件: 鼠标移入 widget 之内,或是移出
  • 移动事件: widget 的位置改变
  • 大小改变事件: widget 的大小改变
  • 显示和隐藏事件: widget 显示和隐藏
  • 窗口事件: 窗口是否为当前窗口

QT 将系统产生的消息转化为 QT 事件,QT 事件被封装为对象,所有的 QT 事件均继承抽象类 QEvent,用于描述程序内部或外部发生的动作。

2.QT事件的产生

  • 用户操作产生事件被操作系统给捕获,比如:键盘按钮,鼠标按键,鼠标滚轮产生对应的事件。
  • 操作系统捕获事件放进消息队列中
  • QtGUI应用程序检测到相应的事件,从内核中获取事件,并将事件封装为QEvent 分发到相应的QWidget对象。
  • 相应的 QWidget 中的 event(QEvent *)进行事件处理会对事件进行处理
  • event(QEvent *)会根据事件类型调用不同 的事件处理函数。
  • 在事件处理函数中发送 QT 预定义的信号,最终调用信号关联的槽函数

【QT】——事件处理系统,QT笔记,qt,开发语言

3.事件处理函数

 Qt 提供的事件处理器函数都是回调函数,也就是说作为使用者我们只需要指定函数的处理动作,关于函数的调用是不需要操心的,当某个事件被触发,Qt 框架会调用对应的事件处理器函数

如何查找事件处理函数?

进入帮助文档。 

【QT】——事件处理系统,QT笔记,qt,开发语言

在Protected Function中,只要函数名后缀带有Event都是事件处理函数

【QT】——事件处理系统,QT笔记,qt,开发语言

3.1鼠标事件

//当当鼠标左键、鼠标右键、鼠标中键被按下,该函数被自动调用
//通过参数可以得到当前按下的是哪个鼠标键
[virtual protected] void QWidget::mousePressEvent(QMouseEvent *event);

//当鼠标左键、鼠标右键、鼠标中键被释放,该函数被自动调用,
//通过参数可以得到当前释放的是哪个鼠标键
[virtual protected] void QWidget::mouseReleaseEvent(QMouseEvent *event);

//鼠标移动事件
//当鼠标移动(也可以按住一个或多个鼠标键移动),该函数被自动调用
//通过参数可以得到在移动过程中哪些鼠标键被按下了。
[virtual protected] void QWidget::mouseMoveEvent(QMouseEvent *event);

//当鼠标双击该函数被调用,通过参数可以得到哪一鼠标键进行双击
[virtual protected] void QWidget::mouseDoubleClickEvent(QMouseEvent *event);

//当鼠标进入窗口的一瞬间,触发该事件,注意:只在进入的瞬间触发一次该事件
[virtual protected] void QWidget::enterEvent(QEvent *event);

//当鼠标离开窗口的一瞬间,触发该事件,注意:只在离开的瞬间触发一次该事件
[virtual protected] void QWidget::leaveEvent(QEvent *event);

3.2键盘事件

//当键盘上的按键被按下了,该函数被自动调用,通过参数可以得知按下的是哪个键
[virtual protected] void QWidget::keyPressEvent(QKeyEvent *event);

//当键盘上的按键被释放了,该函数被自动调用,通过参数可以得知释放的是哪个键。
[virtual protected] void QWidget::keyReleaseEvent(QKeyEvent *event);

3.3窗口重绘事件

[virtual protected] void QWidget::paintEvent(QPaintEvent *event);

当窗口刷新时,该窗口会被自动调用。比如:

  • 窗口大小变化
  • 窗口隐藏了,窗口显示出来
  • 调用update()函数

3.4窗口关闭事件

[virtual protected] void QWidget::closeEvent(QCloseEvent *event);

当窗口标题栏的关闭按钮被按下并且在窗口关闭之前该函数被调用,可以通过该函数控制窗口是否被关闭。

3.5窗口大小变化事件

[virtual protected] void QWidget::resizeEvent(QResizeEvent *event);

当窗口的大小发生变化,该函数被调用。

4. 重写事件处理函数

Qt自带事件处理函数都有默认处理动作,如果我们不想使用事件处理函数函数默认动作,我们可以

自定义该事件的处理动作。

步骤:

  1. 自定义一个窗口类,继承某个窗口类
  2. 在自定义窗口类重写事件处理函数即可
 

示例:

  • 窗口大小变化是,高度和宽度的值.
  • 窗口移动时,坐标中的值也发生变化。

【QT】——事件处理系统,QT笔记,qt,开发语言

 文章来源地址https://www.toymoban.com/news/detail-535156.html

//重写resizeEvent和moveEvent事件

void MainWindow::resizeEvent(QResizeEvent*)
{
    geoUpdate();
}


  void MainWindow::moveEvent(QMoveEvent*)
  {
      geoUpdate();
  }

 void MainWindow::geoUpdate()
 {
     //获取位置信息
     //geometry()函数是QWidet中公共成员函数
     //它获取的是窗口的左上标的位置,以及窗口的宽度,高度
     QRect rect=geometry();
     QString x=QString::number(rect.x());
     QString y=QString::number(rect.y());

     QString height=QString::number(rect.height());
     QString width=QString::number(rect.width());

     ui->coordiante_line->setText("( "+x+","+y+" )");
     ui->heigth_line->setText(height);
     ui->wid_line->setText(width);
 }

到了这里,关于【QT】——事件处理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt——事件处理详解

    事件是Qt应用程序中的基本构建块,它们代表了一些特定的行为或状态变化。事件可以是鼠标点击、键盘输入、窗口大小改变、定时器事件等。每个事件都是一个对象,继承自QEvent类。 Qt中的事件分为多种类型,每种类型对应不同的行为。以下是一些常见的事件类型: 1、键盘

    2024年02月10日
    浏览(59)
  • Qt键盘事件处理——如何在Qt中监听按键操作

    Qt键盘事件处理——如何在Qt中监听按键操作 在Qt中,使用键盘是很常见的操作。如何通过代码来实现键盘事件的监听和响应呢?本文将详细介绍在Qt中如何监听键盘事件,并实现一些基本的按键操作。 在Qt中,所有的键盘事件都被封装成了一个QKeyEvent对象,我们只需要在需要

    2024年02月11日
    浏览(32)
  • QT基础篇(11)QT5事件处理及实例

    1.鼠标事件及实例 QT5中有多种鼠标事件可以使用,常用的鼠标事件有: mousePressEvent :当鼠标按下时触发的事件。 mouseReleaseEvent :当鼠标释放时触发的事件。 mouseDoubleClickEvent :当鼠标双击时触发的事件。 mouseMoveEvent :当鼠标移动时触发的事件。 wheelEvent :当鼠标滚轮滚动时

    2024年01月19日
    浏览(34)
  • 【面试刷题】——Qt事件处理器

    在Qt中,事件处理器(Event Handler)是一种机制,用于捕获和处理各种类型的事件,包括用户输入事件、系统事件等。Qt框架提供了一个事件处理机制,允许你通过自定义事件处理器来响应和处理这些事件。 以下是关于Qt事件处理器的重要概念和用法: 事件处理器处理的基本单

    2024年02月07日
    浏览(30)
  • Python Qt6快速入门-事件处理

    Qt GUI应用程序的核心是 QApplication 类。 每个GUI应用程序都需要一个并且只有一个 QApplication 对象才能运行。 该对象包含应用程序的事件循环——控制所有用户与 GUI 交互的核心循环。

    2024年02月15日
    浏览(33)
  • 统信UOS系统开发笔记(三):从Qt源码编译安装之编译安装Qt5.12.8

      上一篇,是使用Qt提供的安装包安装的,有些场景需要使用到自己编译的Qt,所以本篇如何在统信UOS系统上编译Qt5.12.8源码。     系统版本:      参考博文《获取下载Qt安装包,Qt源码全国网址备忘录(不用注册Qt账户,即可下载各版本Qt安装包和Qt源码包)》   

    2024年02月08日
    浏览(43)
  • Qt扫盲-Qt事件系统概述

    在Qt中,事件是由抽象的QEvent类派生而来的对象,表示发生在 应用程序内部 或应用程序需要知道的 外部 活动的结果。 事件可以由QObject子类的任何实例接收和处理,一般这个事件在窗口程序里面使用非常频繁。 那事件是如何传递并处理的呢? 当事件发生时,Qt会通过构造适

    2024年02月08日
    浏览(32)
  • DAY4,Qt(事件处理机制的使用,Qt中实现服务器的原理)

    ---chatser.h---头文件 ---chatser.cpp---函数实现文件 ---main.cpp---测试文件 结果展示---     

    2024年02月15日
    浏览(45)
  • Qt知识笔记(八)—— 鼠标和事件

    默认情况下,触发事件需要点击一下,才能触发。可设置为自动触发: setMouseTracking(true); 鼠标事件有单机,双击,释放,移动,滑轮 单机:void mousePressEvent(QMouseEvent *event); 双击:void mouseDoubleClickEvent(QMouseEvent *event); 释放:void mouseReleaseEvent(QMouseEvent *event); 移动:void mouseMove

    2024年02月16日
    浏览(51)
  • Qt鼠标点击事件处理:显示鼠标点击位置(完整示例)

    Qt 入门实战教程(目录) 前驱文章: Qt Creator 创建 Qt 默认窗口程序(推荐) 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。 例如点击鼠标,按下按键。 在Qt中使用一个对象来表示一个事件,它继承自QEvent类。 如鼠标事件(例如点击

    2024年02月10日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包