我对一个简单的程序有疑问。 我以这种方式打开 QFileDialog:
QFileDialog fileDialog(this);
fileDialog.setAcceptMode(QFileDialog::AcceptOpen);
if (!fileDialog.exec())
return;
但是它显示的是 Qt 对话框而不是 native Windows 对话框。我使用的是 Windows 7 x64,而且我确实更喜欢 native 对话框而不是 Qt 对话框,因为它更奇特一些。然而我读过,我发现这可以通过使用来改变:
fileDialog.setOption(QFileDialog::DontUseNativeDialog, false);
事实上,我没有得到 native Windows 对话框,而是 Qt 对话框,因此该选项不起作用...有人知道如何在不使用静态成员的情况下解决此问题吗?
我真的不想使用静态成员,因为它们存在某种内存泄漏问题或其他问题,因为如果您使用静态成员重复打开新对话框,程序使用的内存会不断增加,但是,使用以前用指针存储的对话框没有这个问题。
所以,如果有人对这两件事( native 对话框和内存泄漏问题)有答案,请告诉我。
谢谢。
最佳答案
native 对话框不支持 QFileDialog
类公开的全部功能。这就是为什么它们只能通过名为 getOpenFileName()
、getSaveFileName()
等的静态快捷函数来使用。如果您正在使用这些函数但仍然不想看到 native 对话框,则可以使用 DontUseNativeDialog
标志。
关于qt - QFileDialog::DontUseNativeDialog 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6405234/