2013-10-07 4 views
0

У меня есть приложение Qt. При выполнении из командной строки я могу указать пароль как аргумент, который затем отправляется QNetworkAccessManager на сервер, чтобы проверить его, а ответ обрабатывается QObject. После отправки сетевого запроса приложение запускает графический интерфейс.Ожидание ответа QNetworkAccessManager перед запуском GUI

Я хотел бы, чтобы графический интерфейс запускался, только если пароль правильный, поэтому дождитесь завершения действия QObject.

Я думаю, что могу загрузить графический интерфейс только из файла main.cpp, поэтому я должен проверить пропущенную работу в этом файле. QObject мог бы вызвать код из файла main.cpp, но этот файл не является классом и не может иметь методы.

Каков правильный путь?

ответ

3

Вы можете легко запустить свой графический интерфейс из любого места. Например:

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

Смежные вопросы