c++ - 代码在尝试打开 QDialog 时卡住

标签 c++ visual-studio qt

我正在尝试在 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/

相关文章:

c++ - 这到底是什么意思(C++ 函数指针)?

c++ - 读取 Unicode 文件

.net - Visual Studio : Best way to use multiple programming languages for a single application

c++ - 如何遍历 QList 并将值组合在一起?

c++ - QWidget::setLayout: 试图在 Widget ""上设置 QLayout "",它已经有一个布局

c++ - 如何在 Qt 中使用 SQLite

c++ - 在 C++ 中排序然后打印 vector

c++ - 在 VS2012 中伪造原始字符串?

visual-studio - 通过 Manage NuGet Packages 安装 Bootstrap 后,bootstrap 文件不显示以供引用

visual-studio - 两个解决方案在 Visual Studio 中共享一个项目