要禁用或隐藏 QFileDialog 的上一级目录按钮,可以通过重写 QFileDialog 的 createButtons() 方法来实现。
linux 有root权限,为了不让用户到上一级目录删除文件。故禁用掉。
以下是一个示例:
cpp复制代码
class CustomFileDialog : public QFileDialog { public: explicit CustomFileDialog(QWidget *parent = 0) : QFileDialog(parent) {} protected:
// 重写 createButtons() 方法 QDialogButtonBox *createButtons(QFlags<QDialogButtonBox::StandardButton> buttons) override
{
QDialogButtonBox *button_box = QFileDialog::createButtons(buttons);
// 隐藏上一级目录按钮 QList<QAbstractButton *> button_list = button_box->buttons(); for (QAbstractButton *button : button_list)
{
if (button->objectName() == QStringLiteral("toParentButton"))
{
button->setEnabled(false); // button->hide();
}
}
return button_box;
}
};
在这个自定义的 QFileDialog 类中,我们重新实现了 createButtons() 方法。这个方法返回 QDialogButtonBox 对象,可以在这个对象上找到上一级目录按钮并将其禁用和隐藏。
要使用此自定义文件对话框,只需要创建一个 CustomFileDialog 对象并像平常一样使用它即可: