2013-12-18 2 views
1

Я пытаюсь установить QComboBox, чтобы иметь расширяющуюся высоту, но корректируя длину содержимого.QComboBox AdjustToContents изменение высоты

Комбо создается следующим образом:

self.dataentrycombo = QComboBox() 
self.dataentrycombo.setIconSize(QSize(48,48)) 
self.dataentrycombo.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) 
self.dataentrycombo.setSizeAdjustPolicy(QComboBox.AdjustToContents) 
self.dataentrycombo.setModel(self.dataentrymodel) 

После того как я заселить мою модель, размер Настраивает, но высота меньше, чем на панели инструментов, что выпадающий живет в:

enter image description here

Если я изменю свой размер главного окна, то он полностью расширится:

enter image description here

Я попытался с помощью QComboBox.AdjustToMinimumContentsLengthWithIcon, но тогда он просто выглядит следующим образом:

enter image description here

Мои модели элементов создаются следующим образом:

item = QStandardItem(QIcon(form.icon), form.icontext) 
    item.setData(form, Qt.UserRole + 1) 
    self.dataentrymodel.appendRow(item) 

Дополнительная информация:

  • Qt: 4.7
  • Окно с 7 и 8
+0

Я воспроизвел ваш пример так близко, как только мог, но я не могу воспроизвести это поведение. Для меня достаточно установить политику размера, чтобы увеличить высоту (в противном случае комбинация будет вертикально вертикально на панели инструментов). Поэтому я считаю, что более полным является пример, необходимый (если не существует какой-либо проблемы с версией или платформой). – ekhumoro

+0

@Nathan W, я столкнулся с той же проблемой несколько месяцев назад, пытаясь ее исправить, и наконец нашел решение, которое устранило проблему. Я просто назовет 'adjustSize()' виджета, который не расширялся. после установки * model * вызвать 'adjustSize()' на 'QComboBox'. Я думаю, что это должно решить вашу проблему. Если это не сработает для вас, попробуйте вызвать тот же метод в виджетах, после чего он содержит 'combobox' – qurban

+0

, и если он не работает, измените его размер на текущий размер. 'self.resize (self.size())' (это взломать, чтобы настроить дочерние элементы окна) – qurban

ответ

0

я был в состоянии исправить это с помощью:

self.dataentrycombo.setMinimumHeight(self.projecttoolbar.height()) 

Это немного грязный хак, но он хорошо работает на данный момент.

 Смежные вопросы

  • Нет связанных вопросов^_^