之前看过很多在ListWidget中添加item的方法,但是大部分都没能解决我的问题。
昨天把这个问题解决了,想着把它记下来。留个纪念吧。
先上一个图例。
就像这一样。这个是纯代码实现。以下是纯代码
#include "dialog.h"
#include "ui_dialog.h"
#include <QHBoxLayout>
#include <QMap>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
widget = new QWidget;
// 设置透明度,当背景色为白色时,这样才能看到选中的颜色
widget->setStyleSheet("background-color: rgba(255, 255, 255, 0);}");
listwidget = new QListWidget(this);
layout = new QHBoxLayout(widget);
lab1 = new QLabel;
btn1 = new QPushButton;
layout->addWidget(lab1);
layout->addWidget(btn1);
lab1->setText(tr("把整个widget放入到item中"));
btn1->setText(tr("可点击"));
widget->setLayout(layout);
QListWidgetItem *aItem = new QListWidgetItem(listwidget);
listwidget->addItem(aItem);
listwidget->setItemWidget(aItem,widget);
listwidget->setGeometry(0,0,300,350);
aItem->setSizeHint(QSize(0,50));
widget->show();
}
Dialog::~Dialog()
{
delete ui;
}
但是就像我就觉得用代码太麻烦了。用ui设计又快又方便
就像这样,画出一个listwidget 一个widget在widget中按照自己的想法布局
接下来必须到代码中实现“塞入”的动作。
只要在构造函数中用
这三句就搞定了。不过运行之后会发现
因为item的大小所以导致widget显示不完全。
所以需要注意设置item的大小。建议使用
这样放大item的大小之后就可以正常显示自定义的widget的内容了。