C++ QFileDialog使用OS定义的默认文件对话框的替代方案?

C++ QFileDialog使用OS定义的默认文件对话框的替代方案?,c++,qt,C++,Qt,我尝试在我的程序中使用QFileDialog,但我更喜欢主机操作系统使用的默认文件对话框。在我的例子中,由于我使用Windows 7,它应该如下所示: 有没有办法让Qt使用主机操作系统使用的默认文件对话框 我的代码: QFileDialog saveDialog(this); saveDialog.setAcceptMode(QFileDialog::AcceptSave); if (!saveDialog.exec()) return; 除非您已经这样做,否则Qt会尝试使用本机

我尝试在我的程序中使用
QFileDialog
,但我更喜欢主机操作系统使用的默认文件对话框。在我的例子中,由于我使用Windows 7,它应该如下所示:

有没有办法让Qt使用主机操作系统使用的默认文件对话框


我的代码:

QFileDialog saveDialog(this);
saveDialog.setAcceptMode(QFileDialog::AcceptSave);

if (!saveDialog.exec())
    return;
除非您已经这样做,否则Qt会尝试使用本机文件对话框。如果不是windows7,那就是一个bug


向我们展示一些测试用例代码,它应该可以工作。您是否将自己的QFileDialog子类化而不是使用?

对其使用静态函数,它就会工作

QString filename = QFileDialog::getOpenFileName(this, ... vars);
它将使用OSX和Windows的本机对话框,但如果您不使用其中一个静态函数来显示它,它将使用QT对话框

它是为那些不同的静态函数写在文档中的


它看起来像什么?我正在使用Qt4.7.1,当我在Windows7上使用QFileDialog时,它看起来就是这样。@Falmair Pieter的问题,我想,是他在windows上获得了旧文件对话框。显然,在非Windows操作系统上,该对话框不会是Windows对话框,但在Windows上,它应该是本机对话框。我的猜测是Pieter有一个较旧版本的QT,它早于新的Vista通用文件对话框。对我来说(在OS X上),它确实像文档中描述的那样:我得到本机对话框,除非我将QFileDialog子类化或传递标志DontUseNativeDialog。不过,至少静态方法应该在Windows7上显示本机对话框。我没有使用静态方法。我在问题中添加了我的代码。如果可能的话,我可能会尝试一下静态方法,使用您周围的代码。不幸的是,我手头没有win7对话框可以尝试。然后将使用“加载”对话框。如果我需要一个“保存”对话框怎么办?