2013-10-07 44 views
0

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

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

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

什么是正确的方式去呢?

回答

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(); 
+0

我不知道。现在它工作了!感谢您快速高效的回答! – Neptilo

相关问题