2011-11-05 100 views

回答

4

如何在QListWidget中添加圖標?這應該工作正常(我加載從資源文件的圖標):

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

編輯

從截圖中我看到你的問題是,有下面對應的圖標一些空白空的字符串。您可以通過將非常小的大小設置爲列表窗口小部件項目的字體來破解此行爲。

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); 

這將做到這一點。但是,您也可以使用setItemWidget函數並使用您的自定義小部件,或使用QListView和委託。

+0

一個空的空間被示出,而不是文本。當您選擇圖標時選擇此空間。我想擺脫它。更正了我的問題。 – Dmitriy

+0

檢查我更新的答案 – pnezis

+0

設置小字體並不能解決問題。選擇後,一個小矩形仍然可見。 setItemWidget奇怪地工作,它仍然顯示一個空的矩形。我已經添加了一個像素圖作爲小部件的QLabel。最後的希望是代表。你能發佈一個代碼片段,如何實現我的目標? – Dmitriy

1

我的解決方案是在圖標大小的項目上調用setSizeHint()。我添加了一點填充,因爲選擇框被切斷了。

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

使用NULL代替

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

+1

這是正確的答案 – ejectamenta

相關問題