0

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

我希望仅在密码正确的情况下启动图形界面,因此请等待操作QObject完成。

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

正确的方法是什么?

4

1 回答 1

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();
于 2013-10-07T09:02:05.787 回答