我有一个简单程序的问题.我这样打开一个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,因此该选项无效......任何人都知道如何在不使用静态成员的情况下解决此问题?
我真的不想使用静态成员,因为它们有一种内存泄漏问题或者某些东西,因为如果你用静态成员重复打开新对话框,程序使用的内存会增加和增加,但是,使用之前存储的对话框用指针没有这个问题.
所以,如果有人对这两件事都有答案(原生对话和内存泄漏问题),请告诉我.
谢谢.
本机对话框不支持QFileDialog
该类公开的完整功能.这就是为什么它们只能通过称为getOpenFileName()
" getSaveFileName()
等" 的静态快捷方式来实现.如果您正在使用这些函数但仍不希望看到本机对话框,则使用该DontUseNativeDialog
标志.
归档时间: |
|
查看次数: |
5902 次 |
最近记录: |