代码之家  ›  专栏  ›  技术社区  ›  darron

Qt QFileDialog-仅使用静态函数的本机对话框?

  •  7
  • darron  · 技术社区  · 16 年前

    我只是想保存一个文件。但是,我需要输入一个没有后缀的文件名来自动获取默认后缀(setDefaultSuffix()就是这样做的)。

    我不想完全失去本机保存对话框只是为了这个。exec()没有从QDialog重载,因此它完全绕过本机钩子(忽略DontUseNativeDialog选项,即使它为false)。

    如果我禁用文件覆盖警告并在函数返回后自己附加默认后缀,那么如果用户不想覆盖,我将重新打开对话框。。。那太难看了。

    是否有一些信号我可以捕捉并快速注入默认后缀,如果它不在那里?我猜不会,因为这是本地对话。

    过滤器有什么问题吗?我只有一个选择。它应该使用这个扩展。

    这看起来很蹩脚。启动“保存”对话框并简单地键入“test”永远不会导致无扩展文件。”“测试”,是的测试“不可能。当用户点击Load,看不到刚刚保存的文件时,这会让他们很困惑。

    我猜Qt的跨平台部分给了我最小的公共分母文件对话框功能?

    2 回复  |  直到 16 年前
        1
  •  5
  •   Mathias    16 年前

    是的,如果您查看Qt源代码,很明显只有静态函数使用本机文件对话框。不幸的是,用其他方法无法获得本机对话框。。。

        2
  •  0
  •   richardwb    16 年前

    举个例子,我自己也试过,事情似乎很合理:

    QString filter = "Text files (*.txt)";
    QString selectedFilter;
    QString filename = QFileDialog::getSaveFileName(0, "", "", filter, &selectedFilter);
    

    套房 测试 在“保存”对话框中,返回 测试.txt .
    测试。 在“保存”对话框中,返回 .
    套房 测试.foo .

    如果已有同名文件,则所有这些文件都会显示相应的覆盖对话框。

    ,没有任何后缀,是用引号括起来的( “测试” ),或先输入 (这将使其显示所有文件)然后输入 测试 . (但奇怪的是 selectedFilter