2012-11-09 20 views
8

Czy istnieje sposób na zwiększenie wysokości elementów, które są wymienione w kontrolce QComboBox?QComboBox AbstractItemView :: item

Próbowałem następujących jak sugeruje tutaj in QTDevNet forums ale bez powodzenia

QComboBox QAbstractItemView::item {margin-top: 3px;} 

Próbowałem to również, wciąż bez rezultatu.

QComboBox QAbstractItemView::item {min-height: 20px;} 

Czy można to osiągnąć na poziomie arkusza stylów?

Odpowiedz

26

Twój arkusz stylów wydawał się poprawny, więc spróbowałem. Wydaje się, że problem jest podobny do this one on Qt centre:

QCompleter ustawia niestandardową QAbstractItemDelegate na jego wzór i niestety ten zwyczaj poz delegat nie dziedziczy QStyledItemDelegate ale po prostu QItemDelegate (a następnie przesłania paintmethod aby pokazać wybrany stan).

Jeśli zastąpić domyślny delegata przez QStyledItemDelegate, Twój arkusz stylów powinno działać:

QStyledItemDelegate* itemDelegate = new QStyledItemDelegate(); 
combo->setItemDelegate(itemDelegate); 
+0

wydaje się, że jest to najmniej bolesny sposób realizacji mojego wymagania, dziękuję – warunanc

+0

Dla mnie nadal nie działa. Zrobiłem to, co mówisz, i próbowałem użyć tego samego stylu, i to nie działa. Pozostaje w ten sam sposób. – darkgaze

+0

dla każdego, kto ma problem z plikiem @darkgaze po użyciu tego rozwiązania, spróbuj użyć elementu 'QComboBox :: item' jako selektora w arkuszu stylów. Ta odpowiedź wraz z tym selektorem działała dla mnie. – MildWolfie

1

Alternatywą solution byłoby:

ui->comboBox->model()->setData(ui->comboBox->model()->index(-row-, 0), QSize(-width-, -height-), Qt::SizeHintRole);

, gdzie -row- jest zero- oparty indeks pozycji; -width- i -height- oznaczają odpowiednio podpowiedź dotyczącą szerokości i wysokości elementu.