Chcę wyświetlić tylko ikony w moim QListWidget. Ustawiłem tekst na pusty ciąg. Po wybraniu ikony widzę pusty zaznaczony kwadrat w miejscu tekstu. See the screenshot Jak mogę pozbyć się tego pustego miejsca ?!Jak wyświetlać ikony bez tekstu w QListWidget?
Odpowiedz
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.
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);
wykorzystanie NULL zamiast
ui->listWidget->addItem(new QListWidgetItem(QIcon(":/res/icon"),NULL));
to jest poprawna odpowiedź – ejectamenta
Pusta przestrzeń jest pokazany zamiast tekstu. To miejsce jest zaznaczone po wybraniu ikony. Chcę się go pozbyć. Poprawiłem moje pytanie. – Dmitriy
Sprawdź zaktualizowaną odpowiedź – pnezis
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