如何更改 QFileDialog 过滤器组合框中的 maxVisibleItems

How to change maxVisibleItems in QFileDialog filter combobox

我有 QFileDialog 过滤器中有 11 个项目。默认情况下 QComboBox 显示 10,其余的你需要滚动 - 即你必须滚动 1 项。我想改变它。 QComboBoxmaxVisibleItems 属性,但如何访问 QFileDialog 的过滤器组合框?我可以在 QDialogPrivate::qFileDialogUi->fileTypeCombo 中看到它,但我无法访问它。

谢谢!

以下解决方案适用于非原生文件对话框(即您必须设置QFileDialog::DontUseNativeDialog标志)。

在这种情况下,QObject::findChild 可用于在小部件中查找组合框。以下示例假定对话框 只有一个组合框 。如果不是这样,您必须通过 QObject::findChilden 找到正确的,其中 returns 是所有 children.

的列表

示例代码可能如下所示:

auto dialog = new QFileDialog(parent);
dialog->setOptions(QFileDialog::DontUseNativeDialog);
auto cBox = dialog->findChild<QComboBox*>();
if(cBox)
    cBox->setMaxVisibleItems(11);
else
    qCritical() << "Unable to find any combobox child";

//setup and show

重要提示:如果找不到 child,可能您必须先显示对话框才能修改框。在这种情况下,将代码放在 show 调用之后,它可能会起作用。