今天處理一個退出程式問題,查資料後可用quit()、exit()退出程式
問題:登入界面(模态的dialog),主界面。登陸成功則進入主界面,不成功會有相關提示,退出則關閉程式。
在主程式的mainwindow構造函數中調用login登入界面,并做相關處理,結果無論如何也退出不了程式。
漫漫分析路:
從函數的介紹中可以知道:如果事件循環沒有運作,則此函數不執行任何操作!!!
也就是說在執行exec()函數之前調用exit()、quit()函數退出的,是無效操作
在這裡,由于login登入部分是在mainwindow的構造函數中執行的,而此時exec()還沒有執行,沒有建立事件循環,是以此時的退出操作是無效的
解決:設定标志位 LlOGONCOMPLETIONFLAG,用于在login界面成功或退出時指派;通過QTimer不斷的執行退出函數,直至成功。
部分代碼如下:
void MainWindow::loginWin()
{
m_login = new login;
m_login->setModal(true); //設定為模态對話框
m_login->exec();
if(LlOGONCOMPLETIONFLAG)
{
QTimer *timer = new QTimer();
connect(timer, SIGNAL(timeout()), qApp, SLOT(quit()));
timer->start(100);
return;
}
m_pMdiArea->hide();
}
歡迎大家指教,希望大家喜歡
路漫漫其修遠兮,同志仍須努力