当前位置: 首页 > 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”
    在这里插入图片描述

相关文章:

  • 【redis】消息通信-pubsub-blockinglist-stream-对比
  • [原创](Modern C++)现代C++的关键性概念: 什么是左值引用? 什么是右值引用?
  • NO.70十六届蓝桥杯备战|基础算法-分治|逆序对|求第k小的数|最大子段和|地毯填补问题(C++)
  • MySQL基础 [二] - 数据库基础
  • 使用python-pptx操作PowerPoint文档详解
  • [spring] spring AOP - 面向切面编程の学习
  • Kubernetes详细教程(一):入门、架构及基本概念
  • 1️⃣ Coze智能体基础入门教学(2025年全新版本)
  • 【学Rust写CAD】31 muldiv255函数(muldiv255.rs,已经取消)
  • 【ElasticSearch】
  • linux | ubuntu安装docker
  • 破局与赋能:信息系统战略规划方法论
  • 【从零实现Json-Rpc框架】- 项目实现 - 服务端registrydiscovery实现
  • MySQL Explain 分析 SQL 执行计划
  • Navicat Premium 17 安装教程
  • P4779 【模板】单源最短路径(标准版)
  • Vue CLI创建项目指南
  • 【leetcode100】买卖股票的最佳时机
  • 小家电等电子设备快充方案,XSP15支持全协议和支持MCU与电脑传输数据
  • 自动化备份全网服务器数据平台
  • 便宜建站空间/网站推广技巧有哪些
  • 优秀网站主题/微信软文
  • 在线设计logo图标/中山seo关键词
  • 网站备案注销原因/推广下载app拿佣金
  • 西安网站seo收费/福州网站快速排名提升
  • 盐城手机网站制作/西安网络优化哪家好