在启动GUI之前等待QNetworkAccessManager的响应

时间:2013-10-07 08:51:38

标签: qt user-interface signals qnetworkaccessmanager

我有一个Qt应用程序。当从命令行执行时,我可以给出一个密码作为参数,然后由QNetworkAccessManager发送到服务器进行检查,并且回复由QObject处理。发送网络请求后,应用程序将启动图形界面。

我希望只有在密码正确的情况下启动图形界面,所以等待QObject的操作完成。

我想我只能从main.cpp文件加载图形界面,所以我也要检查这个文件中的passwork。 QObject可以调用main.cpp文件中的代码,但此文件不是类,也不能有方法。

正确的方法是什么?

1 个答案:

答案 0 :(得分:3)

您可以从任何地方轻松启动GUI。例如:

class App_starter : public QObject {
  Q_OBJECT
public:
  App_starter(QString password) {
    //performing password check request here
  }

private slots:
  void response() {
    //read response
    if (password_ok) {
      Main_window* mw = new Main_window();
      mw->show();
    } else {
      QApplication::quit();
    }
  }
};

//main()
QApplication app;
App_starter starter(app.arguments()[1]);
return app.exec();

你甚至可以让启动器不了解GUI:

class App_starter : public QObject {
//...
private slots:
  void response() {
    //read response
    if (password_ok) {
      emit password_ok();
    } else {
      QApplication::quit();
    }
  }

signals:
  void password_ok();
};

//main()
QApplication app;
Main_window window;
App_starter starter(app.arguments()[1]);
connect(&starter, SIGNAL(password_ok()), &window, SLOT(show()));
return app.exec();