gpt4 book ai didi

c++ - Q文件对话框 : using getOpenFileName allow for non-existent files

转载 作者:行者123 更新时间:2023-11-30 05:44:10 24 4
gpt4 key购买 nike

我想用 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); }
}

最佳答案

Google 让我失望了,但又仔细检查了文档几分钟,我发现了 this :

QFileDialog::DontConfirmOverwrite 0x00000004 Don't ask for confirmation if an existing file is selected. By default confirmation is requested.

我能够将它用于 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); }
}

关于c++ - Q文件对话框 : using getOpenFileName allow for non-existent files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29907625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com