我想用qt编写一个浏览按钮,打开一个标准的查找文件对话框。如果用户在对话框中输入新文件名,我想创建该文件。如果文件存在,我想打开它。
我有一个函数,给定一个字符串将做出决定。但是,如果文件不存在,QFileDialog::getOpenFileName
会向用户显示错误,并且QFileDialog::getSaveFileName
会要求用户确认如果文件存在则覆盖该文件(我不会这样做)无论如何,所以不应该显示。)
是否实施了可以满足我需求的qt标准,而无需创建从QFileDialog
继承的自定义类或诉诸另一种类似毛茸茸的情况?
这是我当前的工作代码,有不良行为......
void Login::browseFile() {
QString file = ui->txtFile->text();
if (file.isEmpty()) { file = QDir::homePath(); }
file = QFileDialog::getOpenFileName(this,
tr("Select Monage Database"), file,
tr("Database Files (*.db)"));
if (!file.isEmpty()) { OpenDb(file); }
}
答案 0 :(得分:1)
谷歌让我失望,但还有几分钟仔细审查文档,我找到了this:
QFileDialog :: DontConfirmOverwrite 0x00000004如果选择了现有文件,请不要求确认。默认情况下,请求确认。
我能够将其用于getSaveFileName
以实现我想要的功能。我必须指定选项selectedFilter
,但只是传递了默认的0
。
修改后的代码:
void Login::browseFile() {
QString file = ui->txtFile->text();
if (file.isEmpty()) { file = QDir::homePath(); }
file = QFileDialog::getSaveFileName(this,
tr("Select Monage Database"), file,
tr("Database Files (*.db)"), 0,
QFileDialog::DontConfirmOverwrite);
if (!file.isEmpty()) { OpenDb(file); }
}