我有一个 Qt 应用程序。从命令行执行时,我可以提供密码作为参数,然后由 a 发送QNetworkAccessManager
到服务器进行检查,回复由 a 处理QObject
。发送网络请求后,应用程序启动图形界面。
我希望仅在密码正确的情况下启动图形界面,因此请等待操作QObject
完成。
我想我只能从main.cpp
文件中加载图形界面,所以我也必须检查这个文件中的密码。QObject
可以从文件中调用代码,但该main.cpp
文件不是类,不能有方法。
正确的方法是什么?
我有一个 Qt 应用程序。从命令行执行时,我可以提供密码作为参数,然后由 a 发送QNetworkAccessManager
到服务器进行检查,回复由 a 处理QObject
。发送网络请求后,应用程序启动图形界面。
我希望仅在密码正确的情况下启动图形界面,因此请等待操作QObject
完成。
我想我只能从main.cpp
文件中加载图形界面,所以我也必须检查这个文件中的密码。QObject
可以从文件中调用代码,但该main.cpp
文件不是类,不能有方法。
正确的方法是什么?
您可以从任何地方轻松启动您的 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();