QFileDialog :: DontUseNativeDialog不起作用

dal*_*tar 8 qt qfiledialog

我有一个简单程序的问题.我这样打开一个QFileDialog:

QFileDialog fileDialog(this);
fileDialog.setAcceptMode(QFileDialog::AcceptOpen);
if (!fileDialog.exec())
return;
Run Code Online (Sandbox Code Playgroud)

但它显示的是Qt对话框,而不是本机Windows对话框.我使用的是Windows 7 x64,我确实更喜欢原生对话而不是Qt对话,因为它更加花哨.但是我读过,我发现可以通过以下方式更改:

fileDialog.setOption(QFileDialog::DontUseNativeDialog, false);
Run Code Online (Sandbox Code Playgroud)

事实是,我没有获得本机Windows对话框,而是Qt,因此该选项无效......任何人都知道如何在不使用静态成员的情况下解决此问题?

我真的不想使用静态成员,因为它们有一种内存泄漏问题或者某些东西,因为如果你用静态成员重复打开新对话框,程序使用的内存会增加和增加,但是,使用之前存储的对话框用指针没有这个问题.

所以,如果有人对这两件事都有答案(原生对话和内存泄漏问题),请告诉我.

谢谢.

sho*_*osh 5

本机对话框不支持QFileDialog该类公开的完整功能.这就是为什么它们只能通过称为getOpenFileName()" getSaveFileName()等" 的静态快捷方式来实现.如果您正在使用这些函数但仍不希望看到本机对话框,则使用该DontUseNativeDialog标志.