主窗口前的Qt登录对话框

时间:2014-07-01 22:59:05

标签: qt user-interface login dialog

在访问QT应用中的主窗口之前,如何让用户首次登录?我是QT的新手并查看了文档,但没有发现任何有用的信息。谢谢。

3 个答案:

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