本文介绍QListWidget中添加QListWidgetItem的几种形式:
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// 1
ui->listWidget->addItem(new QListWidgetItem(QIcon(":/new/prefix1/hat.png"), "123"));
// 2
addListWidgetItem("123");
// 3
custommodel *model = new custommodel(ui->listView);
ui->listView->setModel(model);
// 4
QListWidgetItem *pItem = new QListWidgetItem(ui->listWidget, 0);
pItem->setSizeHint(QSize(300, 60));
QSize size = pItem->sizeHint();
CustomListItemWidget *pCustomListItemWidget = new CustomListItemWidget(ui->listWidget);
pCustomListItemWidget->setFixedSize(size);
ui->listWidget->setItemWidget(pItem, pCustomListItemWidget);
}
第一种是直接使用QListWidgetItem
,第二种是添加一个widget
进去:
void Widget::addListWidgetItem(QString strText)
{
QListWidgetItem *pItem = new QListWidgetItem(ui->listWidget, 0);
pItem->setSizeHint(QSize(ui->listWidget->width(), 60));
QSize size = pItem->sizeHint();
QWidget *pWidget = new QWidget(ui->listWidget);
pWidget->setFixedSize(size);
QLabel *pLabel1 = new QLabel(pWidget);
pLabel1->setPixmap(QPixmap(":/new/prefix1/hat.png"));
pLabel1->setScaledContents(true);
QLabel *pLabel2 = new QLabel(pWidget);
pLabel2->setText(strText);
QLabel *pLabel3 = new QLabel(pWidget);
pLabel3->setText(strText);
QHBoxLayout *Hboxlayout = new QHBoxLayout(pWidget);
Hboxlayout->addWidget(pLabel1);
Hboxlayout->addWidget(pLabel2);
Hboxlayout->addWidget(pLabel3);
ui->listWidget->setItemWidget(pItem, pWidget);
}
第三种是使用model
:
int custommodel::columnCount(const QModelIndex &parent) const
{
return 1;
}
QVariant custommodel::data(const QModelIndex &index, int role) const
{
//这里不能直接写return QVariant(QString::fromLocal8Bit("关注微信公众号:高二的笔记"));
//必须加上判断role == Qt::DisplayRole
if(role == Qt::DisplayRole)
{
return QVariant(QString::fromLocal8Bit("关注微信公众号:高二的笔记"));
}
return QVariant();
}
QModelIndex custommodel::index(int row, int column, const QModelIndex &parent) const
{
return createIndex(row, column);
}
QModelIndex custommodel::parent(const QModelIndex &index) const
{
return QModelIndex();
}
int custommodel::rowCount(const QModelIndex &parent) const
{
return 3;
}
//This view does not display horizontal or vertical headers; to display a list of items with a horizontal header, use QTreeView instead.
QVariant custommodel::headerData(int section, Qt::Orientation orientation, int role) const
{
if(role == Qt::DisplayRole)
{
return QVariant("BING");
}
return QVariant();
}
第四种实质还是添加widget
,不过是使用setItemWidget
添加一个自定义的widget
。
效果图:
文章来源:https://www.toymoban.com/news/detail-571721.html
工程源码地址:https://gitee.com/gao-yuelong/qtdemo/tree/master/listwidget文章来源地址https://www.toymoban.com/news/detail-571721.html
到了这里,关于QListWidget中添加QListWidgetItem的几种形式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!