Qt主窗口之前的登录对话框盒子

4

在我的QT应用程序中,如何让用户在进入主窗口之前先登录?我是QT的新手,已经查阅了文档,但没有找到什么有用的信息。谢谢。

3个回答

6
我会按照以下方式进行制作。假设我的登录对话框是一个 QDialog:
class Login : public QDialog
{
    [..]
};

在我的应用程序中,我创建了一个登录对话框的实例,如果用户按下“确定”按钮关闭对话框,则会打开主窗口。
int main(int argc, char *argv[])
{
    [..]
    QMainWindow mw;
    Login login;
    if (login.exec() == QDialog::Accepted) {
        mw.show();
    }
    [..]
}

1
你应该在 if 块之外声明 mw。否则,当退出块时,它将被销毁。 - Nejat

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

你还应该对解决方案提供一些解释。 - Nejat

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实例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接