PyQt QComboBox устанавливает количество видимых элементов в раскрывающемся списке

Я работаю над приложением в PyQt, которое использует словарь объектов и позволяет отображать поток переменных от робота в режиме реального времени. Одна из вещей, над которой я работаю, чтобы включить это, — это выпадающее меню. К сожалению, у нас есть пара сотен переменных, поэтому мой PyQt Combobox всплывает с верхней части экрана вниз с элементами при нажатии. Я хотел бы ограничить количество элементов, отображаемых одновременно, до 20 с возможностью прокрутки, чтобы увидеть остальные. Я пробовал использовать задокументированный метод setMaxVisibleItems, но он вообще не влияет на раскрывающийся список. Есть рекомендации?

Код здесь:

#!/usr/bin/env python

from PyQt4.QtCore import Qt
from PyQt4.QtGui import QComboBox, QApplication

from cli.parc2_od import cli_od
import sys

app = QApplication(sys.argv)

items = cli_od.OD.keys() #Items to populate dropdown.
combo = QComboBox()

#The solution:
combo.setStyleSheet("QComboBox { combobox-popup: 0; }")
combo.setMaxVisibleItems(10)




combo.addItems(items)

combo.resize(300, 30)
combo.show()


sys.exit(app.exec_())

person Bradley Powers    schedule 28.06.2012    source источник


Ответы (1)


Согласно документации:

Свойство maxVisibleItems игнорируется для нередактируемых полей со списком в стилях, которые возвращают true для `QStyle::SH_ComboBox_Popup, например стиль Mac или стиль Gtk+.

И вы можете переопределить эту подсказку стиля SH_ComboBox_Popup с помощью таблицы стилей:

combo.setStyleSheet("QComboBox { combobox-popup: 0; }");
person alexisdm    schedule 28.06.2012