2015-07-21 66 views
0

我正在QT 4.7.3中開發一個應用程序。此應用程序從MATLAB(SIMULINK)使用mexFunction(* .mexw32)QT exec()命令崩潰

當我嘗試打開使用dialog.exec()命令對話框,顯示窗體調用,但我得到一個「不響應應用程序「瞬間。之後,matlab崩潰。

如果我嘗試打開對話框使用dialog.show()命令,它工作正常。

我真的沒有什麼事情的想法,因爲這兩個命令都弄好相似,如described here

有誰知道發生了什麼事?

回答

1

dialog.exec()旋轉一個本地事件循環,它不能很好地與Matlab本身正在旋轉的循環集成。因此,崩潰。相反,只要自己的事件循環與Qt的需求兼容,你就可以用Matlab做正確的事情。不幸的是,這並不適用於所有平臺,儘管在Windows中它似乎有效。

無論如何您都不應該在main之外使用exec()

+0

我有什麼選擇,因爲我需要等待用戶輸入? – guilhermecgs

+1

等待在現代異步UI代碼中沒有地位。當對話被接受/拒絕時,連接到對話的「接受」或「拒絕」信號以運行您的插槽/仿函數。 –

+0

只是爲了確認:我不能使用像這樣的QMessageBox :: question(...)。那是對的嗎? 奇怪的是,這個messagebox在我的同事電腦上工作,但在我的系統中崩潰,兩個軟件都運行相同的硬件/軟件 – guilhermecgs