新创建1个Qt设计类(Widget):
- Add New > Qt设计师界面类 > 模板选择: Widget > MyListWidgetItem
在界面布局好
- 垂直策略: Fixed
- 高度: 45
- 头文件 MyListWidgetItem.h:
lass MyListWidgetItem : public QWidget
{
Q_OBJECT
public:
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);