在访问QT应用中的主窗口之前,如何让用户首次登录?我是QT的新手并查看了文档,但没有发现任何有用的信息。谢谢。
答案 0 :(得分:5)
我会用以下方式做到这一点。我们假设我的登录对话框是QDialog
:
class Login : public QDialog
{
[..]
};
在我的应用程序中,我创建了一个Login对话框的实例,如果它被接受,即用OK按钮关闭,我打开我的主窗口:
int main(int argc, char *argv[])
{
[..]
QMainWindow mw;
Login login;
if (login.exec() == QDialog::Accepted) {
mw.show();
}
[..]
}
答案 1 :(得分:1)
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
LoginWindow l; // create login-widget
connect(&l, SIGNAL(loggedIn), &w, SLOT(show()); // connect to mainwindow show()
l.show(); // show login-window instead of
// mainwindow at start
return a.exec();
}
答案 2 :(得分:0)
您可能想要:
1-仅在接受对话框时才执行循环,否则您的应用程序将继续运行
2-仅在接受时创建主窗口,因为它可能是一个沉重的接口,需要花费一些时间进行初始化
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog_Login dialog;
if(dialog.exec() == QDialog::Accepted){
MainWindow w;
w.setUser(dialog.GetUser());
w.show();
return a.exec();
}
else return 0;
}
您需要使用登录对话框以并行方式创建QApplication实例。