使用QFileDialog
,我想提示用户输入文件名,如果缺少则添加扩展名。
一个建议是在事后手动添加扩展名。此方法的问题是可能不会警告用户他们正在覆盖文件(例如, test.txt 存在,用户输入 test 并且不会提示它们实际上是在覆盖 test.txt )
我已阅读QFileDialog
上的所有文档,但没有取得任何成功。我已尝试setDefaultSuffix
,但fileDialog.getSaveFileName()
的结果未包含扩展程序。有人可以提供一个如何成功完成此操作的示例吗?
答案 0 :(得分:3)
不幸的是,当您使用“本机”文件对话框时,看起来此功能不可用。但是,如果您使用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());