将缺少的扩展追加到QFileDialog的结果



使用QFileDialog,我希望提示用户输入文件名,并在缺少扩展名的情况下添加扩展名。

一个建议是在事后手动添加扩展。这种方法的问题是,用户可能不会被警告他们正在覆盖一个文件(例如,存在test.txt,用户输入test并且不会被提示他们实际上正在覆盖test.txt

我已经阅读了QFileDialog上的所有文档,但没有取得任何成功。我尝试过setDefaultSuffix,但fileDialog.getSaveFileName()的结果不包含扩展。有人能提供一个如何成功做到这一点的例子吗?

不幸的是,当您使用"本机"文件对话框时,此功能似乎不可用。但是,如果使用Qt文件对话框,它的工作方式与您预期的一样。

以下是如何使用Qt文件对话框:

QFileDialog saveDialog;
saveDialog.setAcceptMode(QFileDialog::AcceptSave);
saveDialog.setDefaultSuffix("txt");
saveDialog.exec();
QString file = saveDialog.selectedFiles().first();

作为替代方案,您可以实现自己的覆盖验证:

QString file;
do 
{
  file = QFileDialog::getSaveFileName();
  if(!file.endsWith(".txt"))
  {
    file.append(".txt");
    if(QFile::exists(file))
    {
      if(QMessageBox::Yes != QMessageBox::question(NULL, QString(), "Confirm overwrite?", QMessageBox::Yes | QMessageBox::No))
      {
        file.clear();
      }
    }
  }
} while (file.isEmpty());

相关内容

  • 没有找到相关文章

最新更新