qt5 - Qt5 getSaveFileName 不检查 Linux 中的现有文件
问题描述
在 Linux 下,QFileDialog::getSaveFileName()
方法不会自动附加过滤器。您必须在代码中手动执行。例子:
QSettings settings;
QDir defaultDir = settings.value("Profile path", QDir::home().absolutePath()).toString();
QString filter = "*.txt";
QString filename = QFileDialog::getSaveFileName(this, tr("Save profile"), defaultDir.path(), filter, &filter);
if (filename.isEmpty()) return;
if (!filename.endsWith(".txt")) filename += ".txt";
但是通过这种方式,文件对话框无法检查现有文件的覆盖情况。如何重现:
- 用户打开文件对话框并输入:“dummy”
- 代码附加过滤器,实际文件名是:“dummy.txt”
- 用户再次打开文件对话框并输入:“dummy”
- 文件对话框不会警告用户文件覆盖,因为它寻找“dummy”而不是“dummy.txt”
我不清楚这个特性是如何在 Linux 中使用的。
解决方案
推荐阅读
- sql-server - 如何使用 Informatica 在 Pre-SQL 中调用未连接的存储过程?
- python - 使用 Python 进行网页抓取:ConnectionError: HTTPSConnectionPool(host='towardsdatascience.com', port=443): Max retries exceeded with url
- c# - GroupBy() 方法返回一个字典
- kotlin - 有没有办法在 tornadofx 中使用 fxml 文件创建自定义 ListCells?
- java - 在Java中将一个大数转换为十六进制
- javascript - 从图表js中的图表中删除条形中间的数据显示和每个图表
- selenium - Selenium IDE 中不存在刷新命令
- c# - Windows 窗体中的简单累加值 ASP.NET 槽按钮不起作用
- wordpress - 登录用户需要刷新页面才能看到内容
- robotframework - RobotFramework:并行运行套件而不是测试用例