您的位置:首页 > 教育 > 锐评 > 装修公司免费装修_济南网站开发公司排名_网络广告营销对应案例_武汉seo网站管理

装修公司免费装修_济南网站开发公司排名_网络广告营销对应案例_武汉seo网站管理

2025/5/24 18:16:57 来源:https://blog.csdn.net/LxiazichengxiL/article/details/146973876  浏览:    关键词:装修公司免费装修_济南网站开发公司排名_网络广告营销对应案例_武汉seo网站管理
装修公司免费装修_济南网站开发公司排名_网络广告营销对应案例_武汉seo网站管理

本篇主要介绍信号和槽,如何关联信号和槽以及用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”
    在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com