2013-10-07 77 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

相關問題