我想简单地保存文件。不过,我需要没有后缀进入自动文件名获得一个默认后缀(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仍将包含在对话框中所示的过滤器,即使不是用它)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top