我正在尝试在 MSVS2010 Professional 中调试 c++/Qt5.5 代码。一个函数有以下几行代码,
/* Static method approach */
QString filters("Music files (*.mp3);;Text files (*.txt);;All files (*.*)");
QString defaultFilter("Text files (*.txt)");
QFileDialog::getSaveFileName(0, "Save file", QDir::currentPath(), filters, &defaultFilter);
对话框根本打不开,应用程序卡住。
我尝试了如下替代方案。
/* Direct object construction approach */
QFileDialog fileDialog(0, "Save file", QDir::currentPath(), filters);
fileDialog.selectNameFilter(defaultFilter);
fileDialog.exec();
但是,代码再次卡住在“fileDialog.exec()”处。 因此,我仅使用这些语句创建了一个不同的新简单项目,并且它按预期工作。
这是不是我环境配置的问题。我尝试调试,但在进入上面的行时只是卡住了代码而没有任何错误。
最佳答案
这看起来像是 Qt 中的已知问题。 https://forum.qt.io/topic/49209/qfiledialog-getopenfilename-hangs-in-windows-when-using-the-native-dialog/8
解决方法是使用 QFileDialog::DontUseNativeDialog 标志,如下所示。
m_imageFile = QFileDialog::getOpenFileName(this, tr("Open Image"), QDir::homePath(), tr("Image Files (*.png *.jpg *.bmp)"), 0, QFileDialog::DontUseNativeDialog); //works
谢谢你的帮助!
关于c++ - 代码在尝试打开 QDialog 时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983412/