Qt子线程中使用QFileDialog类选择文件

之前尝试在Qt的子线程中使用QMessageBox后程序崩溃退出了,后来查资料原因是UI界面不能在Qt的子线程中运行。今天我无意在子线程中调用了QFileDialog类打开了一个窗口,发现程序正常执行了。我发现QMessageBox与QFileDialog都是集成自QDialog,但是一个是正常的一个不是。请问一下这个的原因是什么,是不是QFileDialog类比较特殊,可以在子线程中运行呢?

UI必须在主线程中调用,因为在子线程中调用不安全(不是不能调用,但是在子线程中调用可能会出未知的错误,所以规定不允许在子线程中调用)

我觉得崩溃应该是你某些数据导致的吧,
你可另外在写一个项目,用来测试子线程中使用QMessageBox 和 QFileDialog,
两个应该都可以正常运行的!