[英]Disable file name box in QFileDialog
我相信您无法实现这一点-保存对话框除了选择保存位置之外,还涉及选择名称。 当然,您可能会忽略用户键入的内容,并在他单击OK时强行输入您的名字,但这只会使用户生气。
我认为更好的方法是使用QFileDialog::getExistingDirectory
,它将允许用户选择保存文件的位置,但不允许他选择文件名。 至少这是公平的。
https://forum.qt.io/topic/73973/qfiledialog-with-no-edit-box中回答了类似的问题。
通常,如果您深入研究小部件的源代码以查找元素的名称,则可以隐藏任何小部件中的任何元素,当您有名称时,您可以通过findChild<QWidget *>(elementName)
找到相应的元素。 通常,如果您检查 QSomeWidget.h(Qt 是开源的。),您可以很容易地找到元素名称,因为它们通常被列为小部件成员,要隐藏两个标签、fileEdit、ComboBox 甚至按钮:您可以使用此代码:
QFileDialog fileDialog = new QFileDialog;
QWidget * fileNameEdit = fileDialog->findChild<QWidget *>("fileNameEdit");
Q_ASSERT(fileNameEdit);
fileNameEdit->setVisible(false);
QWidget * fileNameLabel = fileDialog->findChild<QWidget *>("fileNameLabel");
fileNameLabel->setVisible(false);
QWidget * fileTypeCombo = fileDialog->findChild<QWidget *>("fileTypeCombo");
Q_ASSERT(fileTypeCombo);
fileTypeCombo->setVisible(false);
QWidget * fileTypeLabel = fileDialog->findChild<QWidget *>("fileTypeLabel");
fileTypeLabel->setVisible(false);
QWidget * fileButtonBox = fileDialog->findChild<QWidget *>("buttonBox");
fileButtonBox->setVisible(false);
请注意,即使按钮被隐藏,在键盘上键入 Enter(或双击)也会触发“打开”按钮,如果您没有在 Accept 方法中执行任何操作,对话框可能会消失。 因此,如果您真的希望按钮也被隐藏,那么处理该按钮的 state 也是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.