QT基础【5-信号与槽】

这篇具有很好参考价值的文章主要介绍了QT基础【5-信号与槽】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QT基础【5-信号与槽】,qt,开发语言

QT基础【5-信号与槽】,qt,开发语言

🌈个人主页:godspeed_lucip
🔥 系列专栏:QT从基础到进阶



1 Qt槽函数的写法

1.1 Qt4的写法(不推荐)

connect(ui->element_name, SlGNAL(clicked), this, slot(function()));

1.2 Qt5的写法

connect(ui.element_name,&QPushButton::clicked, this,&Widget::func_name);

推荐使用这种写法,信号名字、槽函数名字写错了,编译器会直接报错

参数解释:

第一个参数:信号的发出者

第二个参数:发出的信号

第三个参数:信号的接受者

第四个参数:处理的槽函数

1.3 示例

#include "widget.h"
#include "ui_widget.h"
#include<QMessageBox>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(btn_click())); //QT4的写法;
    connect(this->ui->pushButton,&QPushButton::clicked,this,&Widget::btn_click); //Qt5的写法;
    //解释:将按钮点击事件绑定到名为pushButton的ui控件上,当该控件发生点击事件时,会运行btn_click函数。
}

Widget::~Widget()
{
    delete ui;
}

void Widget::btn_click(){
    QMessageBox::information(this,"title","push");
}

效果:

QT基础【5-信号与槽】,qt,开发语言

2 C++模板技术实现Qt信号槽机制

2.1 概述

信号槽机制不只在Qt中才可以实现,一般的C++项目也可以使用信号槽

信号的好处:例如类B要使用类A,则B就必须包含A,假如项目较大,文件较多,就很容易出错。而使用信号之后,就可以完成解耦。

与Qt中的信号一样,sigslot的槽函数返回值为void(因为槽函数只是用来响应信号的,通常不关心它的返回值是什么)

另外,槽函数和信号的参数列表也必须是一致的

2.2 代码

首先新建一个C++空项目,并添加sigslot.h头文件和sigslot.cc源文件。文件我都会放在百度网盘中,以供下载。

window中定义了2个信号,handle_signal中定义了两个槽函数,main函数中绑定信号和槽函数,并发送信号。

#include "sigslot.h"
#include<iostream>
using namespace std;

class window { //发送信号的类
public:
	//定义一些信号
	sigslot::signal0<>sig_button_click;
	sigslot::signal1<int>sig_print;
	//在sibgslot中,signal0表示不带任何参数的信号,signal1表示带一个参数的信号
};

class handle_signal :public sigslot::has_slots<> { //处理信号的类
public:
	void handle_button_click_sig() {
		cout << "按钮点击信号被调用" << endl;
	}
	void handle_print_sig(int val1) {
		cout << "打印信号被发送,值为:" << val1 << endl;
	}
};

int main() {
	window w;
	handle_signal handle;
	w.sig_button_click.connect(&handle, &handle_signal::handle_button_click_sig);
	w.sig_print.connect(&handle, &handle_signal::handle_print_sig);
	w.sig_button_click.emit(); //发送信号
	w.sig_print.emit(100); //发送信号
	return 0;
}

2.3 下载链接

百度网盘链接:提取码:ikun

参考:c++之sigslot库 - mohist - 博客园 (cnblogs.com)

3 总结

在代码的舞台上翩翩起舞, Qt,如诗如画,编织梦的彩虹。

跨越平台的轻盈舞姿, 文档的琴音,灵感的涟漪。

模块的花瓣,细腻而丰满, 开发者的心灵,在那里盛开。

清新而深邃,如林中明月, Qt,用优雅的笔触,谱写未来的篇章。

渴望挑战Qt的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多Qt的奇迹吧。我们推出了引领趋势的💻QT专栏:《QT从基础到进阶》 ,旨在深度探索Qt的实际应用和创新。🌐🔍

QT基础【5-信号与槽】,qt,开发语言

QT基础【5-信号与槽】,qt,开发语言文章来源地址https://www.toymoban.com/news/detail-832962.html

到了这里,关于QT基础【5-信号与槽】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • qt中的信号与槽

    connect有好几种形式 连接方式有 连接类型 说明 Qt::AutoConnection 如果发送者和接收者在同一线程,使用Qt::DirectConnection,否则使用Qt::QueuedConnection Qt::DirectConnection 信号被发射时立即执行,信号和槽函数在同一线程 Qt::QueuedConnection 在事件循环回到接收者线程后执行槽函数,信号和槽

    2024年02月07日
    浏览(41)
  • QT的核心——信号与槽

    目录 回顾C 语言信号 1、信号与槽 2、关联信号与槽 2.1自动关联信号与槽 2.2手动关联信号与槽 2.3断开信号与槽 3、自定义信号 3.1自定义信号使用条件 3.2自定义槽函数使用条件 4、信号与槽参数传递 4.1自定义一个带参的信号 4.2关联带参的信号与槽 4.3发送一个带参的信号 5、信

    2024年02月12日
    浏览(50)
  • 2、QT的信号与槽

    connect(信号的发送者,SIGNAL(信号名称),信号的接收者,SLOT(槽函数)); QT 4 的写法 QT 5的写法 控件生成信号定义: ①、在需要接收信号的类中 声明槽函数 ②、在xxx.cpp 中实现槽函数 ③、进行信号与槽的关联 用户自定义信号: ①、在信号的发送者类中声明信号 ②、关联信号与槽

    2024年02月10日
    浏览(44)
  • Qt——Qt工作原理:事件驱动、信号与槽机制

    Qt作为一个现代的GUI(图形用户界面)框架,采用了事件驱动的编程范式,并引入了信号与槽机制,以实现高度交互和松耦合的程序设计。下面详细解释了相关概念,以及如何在Qt中使用它们。 事件是在GUI应用程序中的控件上产生的各种动作、操作或状态变化,例如鼠标移动

    2024年02月10日
    浏览(43)
  • Qt 之 QPushButton,信号与槽机制

    当我们开发基于Qt框架的图形用户界面(GUI)应用程序时,经常需要在界面上添加按钮来实现用户交互。Qt提供了一个名为 QPushButton 的类作为按钮控件的实现。QPushButton是Qt中的标准按钮类,旨在简化按钮的创建和使用。 头文件 :#include QPushButton QPushButton 用于 接受用户点击事

    2024年02月12日
    浏览(48)
  • 【快速上手QT】03-信号与槽connect

    都说信号与槽是QT的精髓(别问谁说的,问就是我说的),那么我们首先先知道什么是信号和槽。 信号就是信号,可以由任何组件去发送,而QT提供的组件可可以发送信号,比如QPushButton(没错,还是以它为例),当我们按下QPushButton的时候,实际上QPushButton会发出信号,那为

    2024年02月21日
    浏览(47)
  • QT中信号与槽机制的介绍,以及信号与槽连接的几种方式

    功能:实现多个组件之间的相互通信,是QT引以为傲的核心机制 信号:就是信号函数,定义在类体的signals权限下,是一个不完整的函数,只有声明没有定义; 槽:就是槽函数,定义在类体的slots权限下,是一个完整的函数,既有声明也有定义,也可以当做普通函数被使用 无

    2024年02月10日
    浏览(48)
  • QT信号与槽的第五个参数

    1、Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定。如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型。如果接收者和发送者不在一个线程,则自动使用Qt::QueuedConnection类型。 2、Qt::DirectConnection:槽函数会在信号发送的时候直接被调用,

    2024年02月13日
    浏览(50)
  • Qt (ui界面)信号与槽函数 组件连接

    重点:信号与槽连接机制。 难点:信号与槽函数的 参数使用。 头函数: 原函数: 测试函数: 测试结果:

    2024年02月14日
    浏览(44)
  • QT--day2(信号与槽,多界面跳转)

     第一个界面头文件: 第一个界面源文件: 第二个界面头文件: 第二个界面源文件: 测试文件: 效果:    

    2024年02月15日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包