2011-01-27 76 views
1

打開QMainWindow對象後,我想從靜態函數中打開一個模式對話框(用於登錄)。打開QMainWindow後從靜態函數運行QDialog對象

class DialogLog : public QDialog { 
    DialogLog(QWidget * parent) : QDialog(parent) { 
     //some code 
     exec(); 
    } 
}; 

class LogHandler { 
    static bool log(QWidget * parent) { 
     DialogLog dl(parent); 
     //some code 
    } 
}; 

class WinMain : public QMainWindow {} 

main(..) { 
    QApplication app(..); 

    WinMain fen; 
    fen.show; 

    app.exec(); 
}; 

編輯:如何在WinMain的同一時間之後運行LogHandler :: log()?

+1

那麼是什麼題? – 2011-01-27 11:45:32

回答

2

可能有更好的解決方案,但這是你可以做的:使用一個singleshot timer立即開槍(即一旦事件泵將循環)。

計時器會調用的插槽,例如,您WinMain類:

void main(..) { 
    QApplication app(..); 

    WinMain fen; 
    fen.show; 

    QTimer::singleShot(0, &fen, SLOT(login())); 
    app.exec(); 
}; 

WinMainlogin()插槽,你將有你的電話到LogHandler::log()

void WinMain::login() { 
    if (!LogHandler::log(this)) 
     qApp->quit(); 
} 
+0

太棒了!謝謝你的幫助 – canardman 2011-01-27 12:50:41