如何在几个QT界面之间建立连接

以下为我在学习QT编程中遇到的问题:
如何在QT中要实现一个登陆界面,输入账号密码后切换到我们的主界面?
解决方法为:
1.在登陆界面定义一个信号函数,
2.在主界面定义一个槽函数,
3.通过在main函数中调用connect函数建立连接,
下面把具体实现贴出来供参考,

在登录界面的头文件 .h 中添加信号函数;

public:
signals:
    void signalss(QString name);//登录成功后把用户名发给主界面

在登录界面源文件 .cpp中添加条件,来触发这个信号

 if(query.next())//如果为真
    {
         MessageBox("登陆成功" );
         this->hide();//隐藏这个界面
         emit signalss(name);//触发发信号
    }

然后在我们的主界面的头文件 .h中添加接收信号的槽函数

public slots:
    void onLogin_name(QString username);//接收信号用的槽

在对应的.cpp源文件中添加我们的槽函数

void MainWindow::onLogin_name(QString username)//槽函数
{
    this->username = username;//根据自己需要把槽函数收到的名字赋给成员变量
    this->setWindowTitle("用户名:"+ username);//设置窗口标题为用户名+ username
    this->show();//显示这个窗口
}

最后我们在main函数中把它们联系起来

#include "mainwindow.h"
#include <QApplication>
#include "dialog.h"
#include <QObject>			//俩个界面创建的类都是来自共同的类,

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Dialog d;
    d.show();
    MainWindow mw;
    
    QObject::connect(&d, SIGNAL(signalss(QString)),&mw,SLOT(onLogin_name(QString)));
	//在这个作用域里把他们关连起来

    return a.exec();
}

记得把头文件添上

其中connect 函数原型:connect(Sender,SIGNAL(signal),Receiver,SLOT(slot));

到这里我们界面之间的联系就建立起来了,还可以带参数的哦,当然这只是一种方法,我们也可以通过一个源文件包含另一个源文件的方式来建立联系。

  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值