2011-11-05 8 views

Odpowiedz

4

Jak dodać ikonę do swojej QListWidget? To dobrze powinien działać (wczytuję ikonę z pliku zasobów):

ui->listWidget->addItem(new QListWidgetItem(QIcon(":/res/icon"), "")); 

EDIT

Od screenie widzę, że twój problem jest to, że jest jakaś biała przestrzeń poniżej ikona odpowiadająca pusty ciąg. Możesz zhackować to zachowanie, ustawiając bardzo mały rozmiar czcionki elementu listy.

QListWidgetItem *newItem = new QListWidgetItem; 
QFont f; 
f.setPointSize(1); // It cannot be 0 
newItem->setText(""); 
newItem->setIcon(QIcon(":/res/icon")); 
newItem->setFont(f); 
ui->listWidget->addItem(newItem); 

To wystarczy. Możesz jednak użyć funkcji setItemWidget i użyć niestandardowego zaprojektowanego widżetu lub użyć QListView i delegata.

+0

Pusta przestrzeń jest pokazany zamiast tekstu. To miejsce jest zaznaczone po wybraniu ikony. Chcę się go pozbyć. Poprawiłem moje pytanie. – Dmitriy

+0

Sprawdź zaktualizowaną odpowiedź – pnezis

+0

Ustawienie małej czcionki nie wystarczy. Mały prostokąt jest nadal widoczny po selekcji. setItemWidget działa dziwnie, nadal wyświetla pusty prostokąt. Dodałem QLabel z pixmapą jako widżetem. Ostatnią nadzieją jest delegat. Czy możesz opublikować fragment kodu, jak osiągnąć mój cel? – Dmitriy

1

Moje rozwiązanie polegało na wywołaniu metody setSizeHint() na przedmiocie o wielkości ikony. Dodałem trochę wyściółki, ponieważ pole wyboru zostało obcięte bez niego.

QListWidgetItem * pItem = new QListWidgetItem(icon, ""); 
pItem->setSizeHint(iconSize + QSize(4,4)); 
listWidget->addItem(pItem); 
7

wykorzystanie NULL zamiast

ui->listWidget->addItem(new QListWidgetItem(QIcon(":/res/icon"),NULL));

+1

to jest poprawna odpowiedź – ejectamenta