2011-01-27 73 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