如何更改 QFileDialog 过滤器组合框中的 maxVisibleItems
How to change maxVisibleItems in QFileDialog filter combobox
我有 QFileDialog
过滤器中有 11 个项目。默认情况下 QComboBox
显示 10,其余的你需要滚动 - 即你必须滚动 1 项。我想改变它。 QComboBox
有 maxVisibleItems
属性,但如何访问 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 调用之后,它可能会起作用。
我有 QFileDialog
过滤器中有 11 个项目。默认情况下 QComboBox
显示 10,其余的你需要滚动 - 即你必须滚动 1 项。我想改变它。 QComboBox
有 maxVisibleItems
属性,但如何访问 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 调用之后,它可能会起作用。