Qt的QFileDialog - 本地对话框只有静态功能?
-
25-09-2019 - |
题
我想简单地保存文件。不过,我需要没有后缀进入自动文件名获得一个默认后缀(setDefaultSuffix()一样)。
我宁愿不完全失去本地保存对话框中只此。 EXEC()不从QDialog的过载,因此它完全绕过天然钩(忽略,即使它的假DontUseNativeDialog选项)。
如果我禁用文件覆盖警告,在函数返回之后自己追加默认后缀,那么我会重新打开的对话框中,如果用户不想覆盖......这只是丑陋。
有一些信号,我能赶上并迅速注入的默认后缀,如果它不存在?我猜不是,因为它是一个本地对话框。
时有什么我做错了与过滤器?我只有一个过滤器选择。应该使用扩展。
这似乎很跛脚。启动保存对话框,并简单地输入“测试”不应该导致无扩展名的文件。 “测试”,是的。 “测试”没办法。这真的会混淆用户当他们击中负载并不能看到他们刚刚保存的文件。
我猜的Qt跨平台的一部分是给我最小公分母文件对话框的功能?
解决方案
是的,如果你看看Qt的源代码,很明显,只有静态函数使用本机文件对话框。这是不可能得到本地对话框任何其他方式,可惜......
其他提示
您是否尝试过在静态函数的过滤选项? [编辑:哎呀,发现你已经有了]
我只是尝试这样做我自己,例如,事情似乎是相当合理的:
QString filter = "Text files (*.txt)";
QString selectedFilter;
QString filename = QFileDialog::getSaveFileName(0, "", "", filter, &selectedFilter);
输入测试在保存对话框返回的test.txt 。结果 进入的测试。在保存对话框返回 test..txt 。结果 进入 test.foo 在保存对话框返回 test.foo
这些都表明适当的覆盖对话框,如果已经有一个相同名称的现有文件。
的唯一方法我可以得到测试,而没有任何的后缀,是通过用引号包围它( “测试”),或通过第一个进入的 *。 * (这将使其显示所有文件),然后进入测试。 (虽然一个奇特的是,selectedFilter
仍将包含在对话框中所示的过滤器,即使不是用它)。