【QT知识】在widget中的绘制事件函数

news2025/8/3 4:15:55

在widget中的绘制事件函数


😊点此到文末惊喜↩︎

1. 代码实现

头文件部分

#include <QWidget>
#include <QPainter>

namespace Ui {
class widget_2_1;
}

class widget_2_1 : public QWidget
{
    Q_OBJECT

public:
    explicit widget_2_1(QWidget *parent = nullptr);
    ~widget_2_1();
    void resizeEvent(QResizeEvent *event);
    bool eventFilter(QObject *obj, QEvent *event);
    void paintEvent(QPaintEvent *);

private:
    //void set_wg2_1_background();
protected:
        Ui::widget_2_1 *ui;
protected:
    void keyPressEvent(QKeyEvent *event);

};

cpp文件部分


// 绘制事件实现widget上绘制一条直线
void widget_2_1::paintEvent(QPaintEvent *)
{
    QPainter painter(this); // 这个this很重要
    painter.drawLine(80, 100, 650, 500);
}
bool widget_2_1::eventFilter(QObject *obj, QEvent *event)
{

	//1.在构造函数中,调用 installEventFilter()注册监视对象
	/*例子:
	zoomCheckBox->installEventFilter(this);
	*/
    
	//2.在监视对象的eventFilter()函数中处理目标对象的事件。
		//如果对象是zoomCheckBox,当鼠标进入(悬停)其上,则zoomTips显示
    if (obj == (QObject*)ui->zoomCheckBox)
    {
        if (event->type() == QEvent::Enter)
        {
            ui->zoomTips->setVisible(true);
        }
        else if(event->type() == QEvent::Leave)
        {
            ui->zoomTips->setVisible(false);
        }
        return false;
    }

}

2. 事件函数

  1. void resizeEvent(QResizeEvent *event);
    • 作用:导致窗口发生大小变化或绘制变化的事件产生时会被调用,进行相应的重写和控件调整,避免错误的显示
    • 触发paintEvent事件
      • 窗口大小(重新调整)改变,或者重新排布(布局)导致重画
      • 调用update 或者 repaint重画
      • 当窗口第一次显示时,系统会自动产生绘图事件
      • 当窗口部件被其他部件遮挡时,然后又再次显示出来,会对隐藏区域进行重绘事件
  2. bool eventFilter(QObject *obj, QEvent *event);
    • 作用:事件过滤器,将原本应该直接发送给组件对象的事件,先发送给过滤器对象,经过过滤后再发送给组件对象
    • 实例如上,控件在构造函数中注册,在该事件过滤器函数中处理注册的控件的消息
  3. void paintEvent(QPaintEvent *);// 绘制事件
    • 作用:用来重绘一个部件的全部或者部分区域
    • 重绘事件的触发:
      • repaint()函数或者update()函数被调用
      • 被隐藏的部件现在被重新显示
      • 其他原因
    • 绘制的优化
      • 当update()函数被调用多次,或者窗口系统发送了多个重绘事件,那么Qt就会合并这些事件成为一个事件。可能多个事件只调用一次绘制函数
      • update()函数允许Qt优化速度和减少闪烁,但是repaint()函数不支持这样的优化,所以建议一般情况下尽可能使用update()函数。
      • 在程序开始运行时就会自动发送重绘事件而调用paintEvent()函数
      • 不要在paintEvent()函数中调用update()或者repaint()函数
      • 当重绘事件发生时,要更新的区域一般会被擦除,然后在部件的背景上进行绘制


少年,我观你骨骼清奇,颖悟绝伦,必成人中龙凤。
秘籍(点击图中书籍)·有缘·赠予你


🚩点此跳转到首行↩︎

参考博客

  1. resizeEvent , paintEvent事件触发原因
  2. Qt 事件过滤器 - EventFilter
  3. QT关键问题解决之paintevent理解
  4. 待定引用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

相控阵天线(四):阵列天线波束赋形(遗传算法、粒子群算法、进化差分算法)

目录波束赋形简介遗传算法波束赋形粒子群算法波束赋形差分进化算法波束赋形智能算法比较遗传算法波束赋形代码示例波束赋形简介 根据期望的方向图辐射特性(如方向图形状、主瓣宽度、副瓣电平、方向性系数)并以某种方法求得阵面电流分布并将此电流分布施加于相应通道中&#xf…

CCF CTO Club 16期活动记事——走进腾讯,实现连接

11月17日&#xff0c;有幸通过CCF CTO Club活动报名&#xff0c;参观了腾讯北京的总部&#xff0c;在腾讯总部大楼7层宴会厅尝到了美食&#xff0c;还参加了“云原生技术的探索与实践”专场讲座和讨论&#xff0c;味蕾和思维获得了双丰收。 参观腾讯总部 这次参观腾讯北京总部…

用 VS Code 搞 Qt6:信号、槽,以及QObject

用 VS Code 搞 Qt6&#xff1a;信号、槽&#xff0c;以及QObject Qt 里面的信号&#xff08;Signal&#xff09;和槽&#xff08;Slot&#xff09;虽然看着像事件&#xff0c;但它实际上是用来在两个对象之间进行通信的。既然是通信&#xff0c;就会有发送者和接收者。 1、信…

NodeJs实战-待办列表(3)-前端页面填充待办数据

NodeJs实战-待办列表3-前端页面填充待办数据为啥在前端填充待办数据&#xff1f;如何在前端填充待办数据&#xff1f;需要了解的知识页面修改后端服务封装数据返回server.js 修改效果图初始化页面添加待办事项完成待办事项为啥在前端填充待办数据&#xff1f; 第2节的页面数据…

Django基础学习

目录 1、Django MVT模型 2、Django项目和应用 2.1 项目和子应用的创建 2.2 子应用url路由配置 3、Django的templates配置 4、Django请求的处理 4.1 get请求处理 4.2 post请求处理 5、Django数据库操作 5.1、数据库连接配置 5.2、models.py配置 5.3、django数据库表的…

【node进阶】深度解析Koa框架---路由|静态资源|获取请求参数

✅ 作者简介&#xff1a;一名普通本科大三的学生&#xff0c;致力于提高前端开发能力 ✨ 个人主页&#xff1a;前端小白在前进的主页 &#x1f525; 系列专栏 &#xff1a; node.js学习专栏 ⭐️ 个人社区 : 个人交流社区 &#x1f340; 学习格言: ☀️ 打不倒你的会使你更强&a…

创建自己的函数库

创建自己的函数库前言一、什么是STM32标准函数库1.定义&#xff1a;2.作用&#xff1a;3.对比&#xff1a;二、构建库函数1.修改寄存器地址封装2.定义访问的结构体指针和引脚3.创建封装函数3.1创建拉低引脚函数3.2创建引脚初始化函数总结前言 回顾一下&#xff0c;前面点亮led…

世界儿童日,周大福真诚关爱儿童成长

守护童心 呵护成长 周大福秉持着“用真诚让幸福永恒”的企业理念&#xff0c;百周年承诺“以人为本”。以爱和关怀凝聚社会力量&#xff0c;提倡社会共融&#xff0c;缔造可持续未来。 梦想家祝福 2021年周大福珠宝集团与美丽中国&#xff0c;携手打造“家源于此”项目。于2…

podman-compose 有前途吗?

文章目录1. 前言2. Docker Compose 和 Podman Compose 的历史3. 未来4. 观点5. 安装5.1 pip3 安装5.2 python 安装5.3 dnf 安装6. 示例1. 前言 虽然 Kubernetes 已经发展成为容器编排的主导者&#xff0c;但人们仍然对管理较小规模的容器&#xff08;通常是单个系统&#xff0…

centos7—安装mysql

文章目录1.1 卸载MariaDB1.2 官网下载包文件1.3 解压安装包1.4 安装相关的Mysql服务1.5 开启Mysql服务1.1 卸载MariaDB 由于centOS7中默认安装了MariaDB,需要先进行卸载 rpm -qa | grep -i mariadb #查找本地mariadb rpm -e --nodeps mariadb-libs-5.5.68-1.el7.aarch64 #这个…

nuxt 如何生成sitemap.xml 动静态站点地图

前言 sitemap.xml的作用是将我们网站的所有页面都被SEO&#xff08;浏览器搜索引擎&#xff09;收录&#xff0c;我们网站的内容更容易被用户搜到&#xff0c;同时增加我们的网站的知名度&#xff0c;排名更靠前。简言之就是用技术做网站推广&#xff0c;所以对于网站推广sitem…

JVM【类加载与GC垃圾回收机制】

JVM【类加载与GC垃圾回收机制】&#x1f34e;一.JVM&#x1f352;1.1JVM简介&#x1f352;1.2JVM执行流程&#x1f34e;二.JVM运行时数据区&#x1f352;2.1 程序计数器(线程私有)&#x1f352;2.2 栈(线程私有)&#x1f352;2.3 堆(线程共享)&#x1f352;2.4 方法区(线程共享…

Matlab图像处理基础(part 1)

目录 0. 概要 1. 图像表示 Image Representation 1.1 图像格式 Image format 1.2 图像分辨率 resolution of image 1.3 图像的编码 1.4 Matlab图像加载、显示和保存 1.5 Image Information 1.6 图像格式转换 1.7 其它类型的像素 1.8 像素数值格式 1.9 图像数据的访问…

vue实现防抖函数、节流函数,全局使用【输入框、按钮】

博主介绍 &#x1f4e2;点击下列内容可跳转对应的界面&#xff0c;查看更多精彩内容&#xff01; &#x1f34e;主页&#xff1a;水香木鱼 &#x1f34d;专栏&#xff1a;后台管理系统 文章目录 简介&#xff1a;这是一篇有关【vue实现防抖函数、节流函数&#xff0c;全局使用…

第一章《初学者问题大集合》第4节:Java程序是如何执行的

想要学好Java编程,就必须先弄清楚Java程序是如何执行的。首先来解释一个最基本的概念:什么是程序?把你想让计算机做的事情用编程语言一条条列出,这个由多条编程语言所组成的“代码序列”就是程序。 那么Java程序又是如何运行的呢?这个过程如图1-1所示。 图1-1 Java程序运…

C语言小游戏之三子棋(井字棋)(1.5w字超详细讲解)

hello&#xff0c;csdn的伙伴们&#xff0c;大家好&#xff0c;我们已经学习到了分支与循环&#xff0c;函数&#xff0c;数组这三大块知识&#xff0c;那么我们现在就可以尝试综合运用前面所学的知识&#xff0c;来完成一个简单的小游戏-----三子棋&#xff08;井字棋&#xf…

Allegro DFM Ravel Rule工具使用指导书

Allegro DFM Ravel Rule工具使用指导书 Allegro任何一个版本都支持DFM Ravel Rule检查,即便是166的版本 打开后的界面如下所示 可以检查项目 测试点,阻焊,走线,丝印,过孔,milling,装配,outline相关的DFM检查 可以让违反规则的设计处以DRC的形式报出来 避免加工问题 …

基于数字孪生打造智慧园区运营平台,助力园区数字化转型

在各行各业数字化转型的浪潮中&#xff0c;园区也在经历数字化转型发展&#xff0c;从传统园区向智慧园区不断演进。传统园区缺乏系统性规划&#xff0c;基于单点功能建设&#xff0c;存在系统孤立、管理粗放且服务不足等问题&#xff0c;难以满足人们日益增长的多样化需求。在…

第四章. Pandas进阶—数据合并

第四章. Pandas进阶 4.6 数据合并 数据合并主要使用的是Merge方法和Concat方法 1.数据合并(merge函数) 1).语法&#xff1a; pandas.merge(right,how‘inner’, on“None”, left_on“None”, right_on“None”, left_indexFalse, right_indexFalse... )参数说明: right&…

甘露糖-聚乙二醇-马来酰亚胺 mannose-PEG-MAL 马来酰亚胺-PEG-甘露糖

甘露糖-聚乙二醇-马来酰亚胺 mannose-PEG-MAL 马来酰亚胺-PEG-甘露糖&#xff0c;溶于大部分有机溶剂&#xff0c;如&#xff1a;DCM、DMF、DMSO、THF等等。在水中有很好的溶解性 中文名称&#xff1a;甘露糖-马来酰亚胺 英文名称&#xff1a;mannose-MAL 别称&#xff1a;…