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

相关文章:

  • 如何删除Debian中的用户?删除Debian用户方法
  • 网络响应速度慢,应该用什么办法来定位问题?
  • WebUI问题总结
  • [dp4_路径问题] 下降路径最小和 | 最小路径和 | 地下城游戏
  • vscode报Module containing this breakpoint has not yet loaded
  • 【GPT入门】第33 课 一文吃透 LangChain:chain 结合 with_fallbacks ([]) 的实战指南
  • Oracle数据库数据编程SQL<6.1 数据字典表查询大全>
  • Java 大视界 -- 基于 Java 的大数据分布式存储在视频监控数据管理中的应用优化(170)
  • 论文笔记(七十四)Dense Policy: Bidirectional Autoregressive Learning of Actions
  • C++中顺序容器vector、list和deque的使用方法
  • 【QT】Qt5 QtWebEngine使用教程
  • 非阻塞IO,fcntl,多路转接,select,poll,epoll,reactor
  • 十五、Redis发布订阅模型
  • Ubuntu 20.04 出现问号图标且无法联网 修复
  • OpenCV图像输入输出模块imgcodecs(imwrite函数的用法)
  • C#里第一个WPF程序
  • 192.168.145.129
  • 42、填写表单后跳转至其他页面,返回时需保留已填数据
  • Axure项目实战:智慧运输平台后台管理端-司机管理(中继器)
  • 4G专网:企业数字化转型的关键通信基石
  • 可以做长页的网站/网推平台
  • 大学生创业做网站/怎样做一个自己的网站
  • 中国菲律宾男篮/旺道seo软件
  • 生物商城网站建设/百度应用商店app下载
  • 上海制造网站公司/百度推广竞价托管
  • 小韩网站源码/适合35岁女人的培训班