VS2022+QT6.7.2信号槽使用(五种方式)(详细)

目录:

一、使用UI信号槽自动连接的方式

二、C++11引入Lamda表达式实现信号槽连接

三、自定义信号槽

四、QT4宏直接连接函数

五、QT5新写法


一、使用UI信号槽自动连接的方式

(1)新建项目:双击UI文件打开UI界面,拖一个PushButton、textEdit控件到窗口中

(2)建立信号与槽步骤如下:

  1. 菜单栏中点击“编辑信号/槽”按钮
  2. 点击PushButton按钮后再点击窗口空白区域
  3. 配置连接中选择“clicked()”(点击)信号->右下角点击编辑
  4. 右边窗口中点击 + 新建名为“slot1()”的槽函数,右下角点击确定
  5. 选择左边的“clicked()”(点击)信号,选择右边的槽函数“slot1()”,点击确定

(3)声明on_pushButton_clicked();函数,定义该函数,点击按钮就触发信号啦

注意:void on_pushButton_clicked();要写在 public slots: 的下面

public slots: 是一个特殊的声明区域,用于声明该类的槽(slots)函数。槽是Qt信号和槽机制的一部分,它允许对象之间进行通信。当一个信号被发射(emit)时,任何连接(connect)到这个信号的槽都会被自动调用。

(代码量不大,作者就懒的贴了,关键部分框出来啦,手敲一遍可以加深记忆)

二、C++11引入Lamda表达式实现信号槽连接

Lambda表达式:在Qt中经常被用作槽函数,以简化信号与槽的连接,可以使用Lambda表达式来响应按钮点击事件,而无需单独定义一个槽函数。

例如:在UI窗口中拖入pushbutton_2、textEdit_2,使用connect连接按钮信号和Lamda表达式槽函数,具体的实现如图所示

connect(ui.pushButton_2, &QPushButton::clicked, this,[=]() {
        ui.textEdit_2->append("Hello World!");
        });
//connnect(信号的发送者,发送的具体信号,信号的接受者,信号的处理(槽))

       // 参数1:信号的发送者

       // 参数2:发送的信号(函数地址)

       // 参数3:信号的接收者

        //参数4:处理的槽函数(函数的地址)

三、自定义信号槽

方法:在类的声明中通过signals:slots:关键字标记,并且类必须继承自QObject或其子类,也就是函数指针连接

例如:在UI窗口中拖入pushbutton_3、textEdit_3,在类中声明信号和槽,并定义槽函数,使用connect连接signals信号和slots槽函数。

逻辑:按钮信号用来触发 Lamda 表达式中的槽函数 mySignal, mySignal 触发对应槽函数mySlots 向 textEdit 输出文本,具体的实现如图所示

connect(this, &QtWidgetsApplication7::mySignal, this, &QtWidgetsApplication7::mySlots);

//onnect函数用于将信号(signal)与槽(slot)连接起来。当信号被发射时,
//连接到该信号的槽函数将被自动调用
//从Qt5开始,connect函数引入了基于函数指针的语法,这使得连接信号和槽变得更加直观和类型安全。

四、QT4宏直接连接函数

(话不多说,直接看图)

//旧式语法(Qt 4及之前)(不建议使用)
connect(this,SIGNAL(mySignal()),this,SLOT(mySlots()));
//这行代码的含义是:将当前对象(this)的mySignal()信号连接到当前对象的mySlots()槽
//当mySignal()信号被发射时,mySlots()槽函数将被自动调用。

//新式语法(Qt 5及更高)(第五种写法)(建议)
 connect(this, &QtWidgetsApplication7::mySignal, this, &QtWidgetsApplication7::mySlots);

五、QT5新写法

(话不多说,直接看图)

//新式语法(Qt 5及更高)(建议)
 connect(this, &QtWidgetsApplication7::mySignal, this, &QtWidgetsApplication7::mySlots);

//注意几点:
//替换了SIGNAL()和SLOT()宏为直接引用成员函数的方式(使用&取地址符)。
//如果mySignal和mySlots是成员函数,需要指定它们所属的类名,除非这些函数是静态的。
//如果mySlots是槽函数且没有参数,那么不需要在函数名后加括号(mySlots而不是mySlots())。

其他:

代码自取:百度网盘 提取码: ag5a

https://pan.baidu.com/s/1rPm-BWAg2_niSoDB1N04ig?pwd=ag5a

双击.sln类型文件打开

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
flowable是一个开源的、可扩展的业务流程管理引擎。它基于Java语言开发,可以与Spring框架无缝集成。flowable6.7.2是flowable的一个版本,在该版本中修复了一些已知的bug,并加入了一些新特性和改进。该版本的flowable可以在SpringBoot应用程序中使用。 SpringBoot是一个能够简化Spring应用开发的框架。它使用约定优于配置的原则,通过自动化配置和快速启动来减少开发者的工作量。使用SpringBoot可以快速搭建和部署应用程序,并且可以与各种流行的开发框架和技术无缝集成。 Vue是一种用于构建用户界面的渐进式JavaScript框架。它主要用于构建单页面应用程序,可以通过组件化方式构建复杂的用户界面。Vue具有简单易用、灵活、高效等特点,支持双向数据绑定和组件化的开发模式。Vue和SpringBoot可以通过RESTful API进行交互,实现前后端的分离开发。 当使用flowable6.7.2时,可以将其集成到SpringBoot应用程序中,以便在应用中使用业务流程管理功能。可以通过引入适当的依赖和进行配置来实现集成。同时,可以使用Vue来构建应用程序的用户界面,通过向后端发送请求和接收响应来实现与flowable的交互。可以通过调用flowable的API来管理和执行业务流程,并将结果通过RESTful API返回给前端的Vue组件进行展示和交互。 总而言之,flowable6.7.2可以与SpringBoot和Vue无缝集成,实现一个具备业务流程管理功能的应用程序。SpringBoot提供了后端的支持,Vue提供了前端的支持,而flowable则负责业务流程的管理和执行。这样的架构可以提高开发效率和应用程序的稳定性,使开发者能够更加专注于业务逻辑的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值