新创建1个Qt设计类(Widget):
- Add New > Qt设计师界面类 > 模板选择: Widget > MyListWidgetItem
在界面布局好

- 垂直策略: Fixed
- 高度: 45

- 头文件 MyListWidgetItem.h:
lass MyListWidgetItem : public QWidget{Q_OBJECTpublic:explicit MyListWidgetItem(QWidget *parent = nullptr);~MyListWidgetItem();void setData(QString title, QString subTitle, QString picFilePath);private:Ui::MyListWidgetItem *ui;};
- 代码 MyListWidgetItem.cpp:
void MyListWidgetItem::setData(QString title, QString subTitle, QString picFilePath){this->title = title;this->subTitle = subTitle;this->picFilePath = picFilePath;ui->labelTitle->setText(title);ui->labelSubTitle->setText(subTitle);QPixmap pixmapPic(picFilePath);int w = ui->labelPic->width();int h =ui->labelPic->height();QPixmap pixmapPicFit = pixmapPic.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); // 饱满填充ui->labelPic->setPixmap(pixmapPicFit);}
- 调用 MainWindow.cpp
// 设置自动适应布局调整(Adjust适应,Fixed不适应), 默认为不适应ui->listWidgetTalk->setResizeMode(QListView::Adjust);// 默认ListMode上下排列,IconMode左右// ui->listWidgetTalk->setViewMode(QListView::IconMode);ui->listWidgetTalk->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
QMap<QString, QMap<QString, QString>>::const_iterator iter;for (iter = this->myContacts.constBegin(); iter != this->myContacts.constEnd(); ++iter) {QString uid = iter.key();QString nickName = iter.value().value("nickName");QString email = iter.value().value("email");QString gender = iter.value().value("gender");QString pic = ":/images/images/male_white.png";if (gender == "0") {pic = ":/images/images/female_white.png";}QListWidgetItem *item = new QListWidgetItem();item->setData(Qt::UserRole+1, uid);item->setSizeHint(QSize(100, 50));ui->listWidgetTalk->addItem(item);MyListWidgetItem *myItem = new MyListWidgetItem();myItem->setData(nickName, email, pic);myItem->setUid(uid);myItem->setSizeIncrement(100, 50);ui->listWidgetTalk->setItemWidget(item, myItem);}
- MainWindow界面设置样式:
QListWidget{background-color: #131313}QListWidget:Item{background-color: #131313}QListWidget:item:selected{background:#2b2a2b}
- QListWidget和QListWidgetItem 的背景色
- QListWidgetItem 被选中的背景色
其它的一些参数说明:
// 设置自动适应布局调整(Adjust适应,Fixed不适应), 默认为不适应ui->listWidget->setResizeMode(QListView::Adjust);// 默认ListMode上下排列,IconMode左右ui->listWidget->setViewMode(QListView::IconMode);// 设置QListWidget中单元项的间距ui->listWidget->setSpacing(10);// 设置不能移动ui->listWidget->setMovement(QListWidget::Static);// 文字没虚线ui->listWidget->setFocusPolicy(Qt::NoFocus);// 设置滚轮策略ui->listWidget->setVerticalScrollMode(QAbstractItemView::ScrollPerItem);// 设置滚轮滚动速度ui->listWidget->verticalScrollBar()->setSingleStep(10);
