2012-11-09 11 views
8

C'è un modo per aumentare l'altezza degli elementi, che sono elencati in un controllo QComboBox?QComboBox AbstractItemView :: item

ho cercato seguente come suggerito qui in QTDevNet forums ma senza fortuna

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

Ho provato anche questo, ancora senza alcun risultato.

È possibile raggiungere questo a livello di foglio di stile?

risposta

26

Il tuo foglio di stile sembrava corretto, quindi l'ho provato. Sembra che il problema è simile a this one on Qt centre:

QCompleter imposta un QAbstractItemDelegate personalizzato sul suo modello e purtroppo questo elemento personalizzato delegato non eredita QStyledItemDelegate ma semplicemente QItemDelegate (e quindi sostituisce il paintmethod per mostrare lo stato selezionato).

Se si sostituisce il delegato di default da un QStyledItemDelegate, il vostro foglio di stile dovrebbe funzionare:

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

sembra che questo sia il modo meno doloroso per implementare il mio requisito, grazie – warunanc

+0

Per me, ancora non funziona. Ho fatto quello che dici, e ho cercato di usare lo stesso stile, e non funziona. Si adatta allo stesso modo. – darkgaze

+0

per chiunque, come @darkgaze, ha ancora un problema dopo aver usato questa soluzione, prova a utilizzare il 'QComboBox :: item' come selettore all'interno del foglio di stile. Questa risposta insieme a quel selezionatore ha funzionato per me. – MildWolfie

1

Un'alternativa solution sarebbe:

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

, dove -row- è zero indice articolo basato; -width- e -height- stand per suggerimento larghezza articolo e altezza suggerimento, rispettivamente.