qt入门(8):信号与槽机制connect,两个窗口之间的通信

目录

1 基本思路
2 代码

基本思路

要实现两个完全不同的窗口之间的通信,使用信号和槽的功能。首先添加类别中选择“QT”,然后可以添加一个ui类,这样就可以添加第二个窗口,并且使用UI进行设计。

然后关键就是实现两个窗口之间的通信,首先是发出信号。很简单,在类中使用signals:的前缀声明,然后分别添加void信号,根据需求可以使用有参数的信号和没有参数的信号。下面是两个.h文件中的信号

signals:
    void SignalInForm2_HideMainWindow();
signals:
    void SignalInMainWindow_HideForm2();

接下来就是发送信号了,通过对按钮建立槽函数,选择click,然后在槽函数中写一个emit signal();即可,具体可见槽函数如下

void Form2::on_button_hide_clicked()
{
   
    emit SignalInForm2_HideMainWindow();
}

void MainWindow::on_button_hide_clicked()
{
   
    emit SignalInMainWindow_HideForm2();
}

关键在于如何建立对象和信号之间的链接,注意,connect并不是一定要在构造函数中创建的,也可以在后面再调用函数进行链接。这里我自己写了一个接口,用来链接两个类。如下

void Form2::MakeConnection(void *_m)
{
   
    MainWindow* ptr=(MainWindow*)_m;
    connect(ptr,&MainWindow::SignalInMainWindow_HideForm2,this,&Form2::hide);
}
void MainWindow::MakeConnection(Form2* _f)
{
   
   connect(_f,&Form2::SignalInForm2_HideMainWindow,this,&MainWindow::hide);
}

然后在主程序中调用这两个接口进行链接,这样就建立了两个完全独立的窗口的链接。

#include "mainwindow.h"
#include "form2.h"
#include <QApplication>

int main(int argc, char *argv[])
{
   
    QApplication a(argc, argv)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值