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

1. Qt信号与槽

本篇主要介绍信号和槽,如何关联信号和槽以及用QPixmap在窗口中自适应显示图片

本文部分ppt、视频截图原链接:[萌马工作室的个人空间-萌马工作室个人主页-哔哩哔哩视频]

1. 信号

在这里插入图片描述

一般不需要主动发送信号,只有自定义的一些控件才需要做信号的的发射处理

//声明格式
signals:void valueChanged(int newValue);void errorOccurred(const QString &message);

2. 槽函数

在这里插入图片描述

//声明格式
public slots:void setValue(int value);void logError(const QString &message);

3. 信号和槽连接方式

信号与槽(Signal & Slot)是Qt框架的核心机制,用于实现对象之间的通信。信号与槽函数之间通过connect()函数连接

在这里插入图片描述

  • 函数原型
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
//参考写法
QObject::connect(QObject1,SIGNAL(valueChanged(int)),//不需要带参数名称QObject2,SLOT(setNum(int)) //不需要带参数名称);
  • 五种连接类型
  • 自动连接(AutoConnection) - 默认方式,根据线程自动判断
  • 直接连接(DirectConnection) - 立即在发送者线程调用槽
  • 队列连接(QueuedConnection) - 事件循环时在接收者线程调用
  • 阻塞队列连接(BlockingQueuedConnection) - 同步的队列连接
  • 唯一连接(UniqueConnection) - 防止重复连接

4. 实现关联时间与处理时间响应

创建一个项目,在.ui文件的界面中放入push button控件及label控件,如下所示

在这里插入图片描述

4.1 建立信号与槽关联

(1)在.h文件中声明槽函数

在这里插入图片描述
(2)在mainwindow.cpp文件中用connect()连接信号和槽,同时定义槽函数的功能

在这里插入图片描述
(3)运行后点击“按钮1”结果和点击“按钮2”结果分别如下

在这里插入图片描述

在这里插入图片描述
注 :label控件中相应文字随之改变,说明关联成功。(也可以增加断点,按F5进行调试测试)

4.2 QPixmap

QPixmap是Qt中用于处理图像数据的重要类,主要用于在屏幕上显示图像。

在这里插入图片描述
在这里插入图片描述
(1)在.h文件中声明QPixmap指针成员变量

在这里插入图片描述
(2)在项目文件夹中创建“image”文件夹,并放入两张图片,用于后面点击不同按钮的显示。在mainwindow.cpp文件中加载这两张图片

在这里插入图片描述
在这里插入图片描述

4.3 QLabel控件显示图片

(1)在槽函数中编写对应槽函数功能

  • setPixmap()介绍
    在这里插入图片描述
  • 函数实现
    在这里插入图片描述
  • 运行结果
    注:直接运行发现,点击按钮后图片不显示,需要将两张图片复制到build文件夹中,才能正确读取到文件(或者在载入文件时写绝对路径
    在这里插入图片描述
    点击按钮1结果
    在这里插入图片描述

点击按钮2结果

在这里插入图片描述

4.4 调整图片显示适应窗口

上面虽然实现了信号和槽函数关联,并成功显示图片,但是图片大小在窗口中显示效果不佳,可以通过其他一些设置函数让图片自适应窗口。

在这里插入图片描述

  • 修改槽函数
    在这里插入图片描述
  • 结果显示
    点击“按钮1”
    在这里插入图片描述
    点击“按钮2”
    在这里插入图片描述

http://www.mrgr.cn/news/97399.html

相关文章:

  • C语言跳表(Skip List)算法(附链表与跳表实现源码)
  • 从奖励到最优决策:动作价值函数与价值学习
  • Opencv之dilib库:表情识别
  • 人大金仓数据库dum文件进行备份数据和恢复数据
  • 使用OpenSceneGraph生成3D数据格式文件
  • 某碰瓷国赛美赛,号称第三赛事的数模竞赛
  • HarmonyOS 基础组件和基础布局的介绍
  • LeetCode Hot100 刷题笔记(3)—— 链表
  • spring boot 整合redis
  • MySQL窗口函数学习
  • AI爬虫?爬!
  • [ctfshow web入门] 零基础版题解 目录(持续更新中)
  • Nginx-keepalived-高可用
  • Nginx 负载均衡案例配置
  • RAG 架构地基工程-Retrieval 模块的系统设计分享
  • 深度学习环境安装
  • 蓝桥杯嵌入式第十四届模拟二(PWM、USART)
  • K8S学习之基础七十四:部署在线书店bookinfo
  • Nginx 配置文件解析
  • 如何让 -webkit-slider-thumb 生效