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