实现给QListWidget的列表项中,文字右侧加图片
QListWidgetItem* item = new QListWidgetItem();
声明一个QWidget,为其添加水平布局,布局中有文字,有图片:
QWidget* itemWidget = new QWidget;
QHBoxLayout* layout = new QHBoxLayout(itemWidget);
QLabel* label = new QLabel(strfileName);
layout->addWidget(label);
QLabel* iconLabel = new QLabel;
iconLabel->setObjectName("iconLabel");
layout->addWidget(iconLabel);
QIcon icon(":/images/open.png");
iconLabel->setPixmap(icon.pixmap(18, 18)); // 设置图标大小
itemWidget->setLayout(layout);
设置声明的QListWidgetItem每一项的大小,添加QListWidget的列表项,为列表项设置每一项的界面窗口
item->setSizeHint(itemWidget->sizeHint());
ui->listWidget->addItem(item);
ui->listWidget->setItemWidget(item, itemWidget);
给当前项右侧添加图片:
QWidget* itemWidget = ui->listWidget->itemWidget(ui->listWidget->currentItem());
QLabel* label = itemWidget->findChild<QLabel>("iconLabel");
if (label != nullptr)
{
QIcon icon(":/images/open.png");
label->setPixmap(icon.pixmap(18,18));
}
清除图片:
QWidget itemWidget = ui->listWidget->itemWidget(ui->listWidget->currentItem());
QLabel* label = itemWidget->findChild<QLabel*>("iconLabel");
if (label != nullptr)
{
if (label->pixmap())
{
label->clear();
}
}