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

时间:2017-10-17 12:10:10

标签: qt qfiledialog

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

在这种情况下,QObject::findChild可用于查找窗口小部件中的组合框。以下示例假定对话框只有一个组合框。如果不是这种情况,您必须通过QObject::findChilden找到正确的,这将返回所有孩子的列表。

示例代码可能如下所示:

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

重要提示:如果您无法找到孩子,则可以先修改对话框,然后才能修改该框。在这种情况下,请在显示调用之后放置代码,它可能会起作用。