2017-10-17 78 views
0

我有QFileDialog在過濾器中有11個項目。默認情況下,QComboBox顯示10,其餘部分需要滾動 - 即必須滾動顯示1項。我想改變它。 QComboBox擁有maxVisibleItems屬性,但是如何訪問QFileDialog的過濾器組合框?我可以在QDialogPrivate::qFileDialogUi->fileTypeCombo中看到它,但我無法訪問它。如何更改QFileDialog過濾器組合框中的maxVisibleItems組合框

謝謝!

+1

只有理論上可以使用*非本機*對話框。您必須先創建對話框,然後使用'findChildren'來定位QComboBox。對於本地對話,它不可能通過Qt – Felix

回答

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 

重要:如果你不能找到孩子,這是可能的,你必須首先顯示對話框,然後才能修改框。在這種情況下,請將代碼放在演出後,它可能會工作。