過程中,我有以下代碼:對話框的內容丟失時用while循環運行
void Processmethod()
{
QDialog *ProcessMessage = new QDialog;
Ui::DialogProcessMessage Dialog;
Dialog.setupUi(ProcessMessage);
ProcessMessage->setModal(true);
ProcessMessage->setAttribute(Qt::WA_DeleteOnClose);
ProcessMessage->show();
processmethodONE();
processmethodTWO();
processmethodTHREE();
}
void processmethodONE()
{
QString ProcessCommand = "w8 " + blablubli";
Prozess.setWorkingDirectory(Path); //QProcess "Prozess" is globaly defined
Prozess.setStandardOutputFile(Path); //in my class
Prozess.start(ProcessCommand);
while(!Prozess.waitForFinished(2000))
{
qApp->processEvents();
std::cerr << "Process running " << std::endl;
}
QProcess::ExitStatus Status = Prozess.exitStatus();
if (Status == 0)
{
std::cout << "File created!" << std::endl;
}
}
所以,我的概率是,對話內容是缺少某種原因。在對話框中我有一些文字和一個按鈕。我只想在彈出對話框和進程運行時看到該內容。任何解決方案或想法如何實現?問候
while循環凍結了UI線程 - 因此您不能有任何響應式UI,無論是主對話框還是進度對話框。刪除while循環並使對話框模式禁用用戶輸入的主UI。 – 2012-03-26 14:57:20
請參閱http://stackoverflow.com/questions/1386043/how-to-make-qt-work-when-main-thread-is-busy – 2012-03-26 15:00:29
嗨,我編輯了我的問題。也許你可以回答這個新問題。我只想顯示對話框的內容,所以只要顯示對話框的內容,一切都可以。 – Streight 2012-03-26 21:48:34