Qt中登录界面跳转到主界面的两种方法
- 1 登录界面跳转
- 2 跳转的两种方式
- 2.1 利用QDialog::Accepted
- 2.2 利用QObject::connect( )
1 登录界面跳转
登录界面跳转,应该是项目的常见需求了。
输入账号、密码后,点击登录按钮跳转。
2 跳转的两种方式
这里博主介绍两种登录界面跳转到主界面的两种可行方式。
2.1 利用QDialog::Accepted
自然,这个方法创建的登录界面类需要继承QDialog类。
设计好登录界面后,选择 go to slot,再选择 clicked(),然后进入其单击事件的槽函数:
/* loginwindow.cpp中 */
void loginDlg::on_login_pushButton_clicked()
{if (你的判断条件) {accept();}
}
整个思路就是:符合登录条件,登录界面就会调用 accept( ) 函数,并返回执行结果 QDialog::Accepted。所以还需要在main.cpp中继续添加判断代码。
/* main.cpp中 */
int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w; // 主界面LoginWindow login; // 登录界面if (login.exec() == QDialog::Accepted) { // 如果符合登录条件,login执行后,必返回QDialog::Acceptedw.show(); // 主界面显示return a.exec();}else return 0;
}
2.2 利用QObject::connect( )
该方法整体思路:点击登录界面的登录按钮,登录界面 emit 一个登录的signal,主界面接收到之后show出,然后 emit 一个已登录 signal,登录界面收到之后自己 close。
具体的 signal 和 slot 就不展示了,这些都是 Qt 的基础知识,方法只提供思路,具体实现需要自己摸索。
/* main.cpp */
int main(int argc, char *argv[])
{QApplication a(argc, argv);LoginWindow login; // 登录界面MainWindow w; // 主界面login.show();QObject::connect(&login, &LoginWindow::userLogin, &w, &MainWindow::rcvLogin); // 登录信号与主界面连接QObject::connect(&w, &MainWindow::closeLoginWindow, &login, &LoginWindow::loginWindowClose); // 登录主界面后关闭登录界面return a.exec();
}