使用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());