以下为我在学习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));
到这里我们界面之间的联系就建立起来了,还可以带参数的哦,当然这只是一种方法,我们也可以通过一个源文件包含另一个源文件的方式来建立联系。