我在过滤器中有QFileDialog
个11个项目。默认情况下,QComboBox
显示10,其余则需要滚动 - 即您必须滚动1个项目。我想改变它。 QComboBox
具有maxVisibleItems
属性,但如何访问QFileDialog
的过滤器组合框?我可以在QDialogPrivate::qFileDialogUi->fileTypeCombo
中看到它,但我无法访问它。
谢谢!
答案 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
重要提示:如果您无法找到孩子,则可以先修改对话框,然后才能修改该框。在这种情况下,请在显示调用之后放置代码,它可能会起作用。