【发布时间】:2023-03-04 12:30:01
【问题描述】:
我想创建一个QFileDialog 设置为QFileDialog::AnyFile,其中文件名是固定的(但位置可以更改)。
到目前为止,我找到了问题QFileDialog - Saving a file with specified file name,但没有得到回答。
有直接选择目录的伪答案,这是我迄今为止在我的项目中所做的。然而,通过测试程序的人发现这令人困惑,因此不是一个可接受的答案。
到目前为止,我尝试的是派生QFileDialog,然后强制执行此操作,但我不知道该尝试什么了。当点击不同的文件时,我设法通过对适当的信号做出反应来重置文件名:
FixedFileDialog::FixedFileDialog(QWidget* parent) : QFileDialog(parent)
{
connect(this, SIGNAL(currentUrlChanged(const QString&)), this, SLOT(current_changed(const QString&)));
}
void FixedFileDialog::current_changed(const QString&)
{
selectFile(_filename);
}
(以_filename为开头设置的成员。)
到目前为止,这有效,但它不会阻止用户在行编辑中输入不同的名称。而且我还没有发现在这种情况下发出的任何信号。
另一个尝试是尝试访问 QLineEdit 小部件本身以禁用它,但我不知道如何。我试过了
QLineEdit* line_edit = dialog.d_func()->lineEdit();
(dialog 属于派生类。)
这不起作用,因为d_func() 在QFileDialog 中是私有的。
有人知道该怎么做吗?
【问题讨论】:
-
QFileDialog::Directory- 就是您要找的。不需要修改文件名时可以选择目录。 -
@DmitrySazonov 我特意写了我不能用这个。