如何在几个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 
#include "dialog.h"
#include 			//俩个界面创建的类都是来自共同的类,

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));

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

你可能感兴趣的:(信号与槽,QT,界面连接,信号与槽的应用)