Qt提供QListWidget类列表框控件用来加载并显示多个列表项。QListWidgetItem类就是列表项类。 QListWidget类列表框控件支持两种列表项显示方式,即QListView::IconMode和QListView::ListMode。

UI属性介绍

41 ItemsWidget之QListWidget_显示模式

autoScroll;//拖动时有滚动条
editTriggers;//编辑触发方式
tabKeyNacigation;//tab键的方式
DragDropMode;//拖放项目的模式
alternatingRowColors;//不同行不同颜色
slletionMode;//选择模式
textElideMode;//文本模式,当文本超出边界时,会以“...”显示,前提是关掉滚动条

41 ItemsWidget之QListWidget_控件_02

flow;//项目是竖着放,还是横着放
isWrapping;//当一个界面显示不下时,是否换行
resizeMode;//调整界面是否会再次对项目布局
layoutMode;//此属性确定项的布局应立即进行还是延迟进行。
//此属性保存项的布局模式。当模式为SinglePass(默认模式)时,所有项都是一次性排列的。
//当模式被批处理时,在处理事件时,这些项以批处理大小的项的形式排列。
//这使得在其他可见项目被放置时,可以立即查看并与之交互。
modelColumn;//当前显示哪些列

currentRow;//当前第几个选项
sortingEnabled;//是否支持排序

函数接口介绍

列表项的显示设置

setViewMode(QListView::IconMode);   //设置显示模式为图标模式。
setViewMode(QListView::ListMode); //设置显示模式为列表模式。

增加项目

void  addItem(QListWidgetItem * item);

插入项目

void  insertItem(int row, QListWidgetItem * item);

删除项目

QListWidgetItem * takeItem(int row);

注意:利用takeItem删除项目时,必须手动删除对应的Item,也就是用delet释放内存。

Removes and returns the item from the given row in the list widget; otherwise returns 0.
Items removed from a list widget will not be managed by Qt, and will need to be deleted manually.

 

QAbstractItemView参考:

实例代码:

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);

ui->toolBox->setItemText(0, QString("好友1"));
ui->toolBox->setItemText(1, QString("好友2"));

name_init();

ui->listWidget->setAutoScroll(true);
ui->listWidget->setAlternatingRowColors(true);
ui->listWidget->setDragDropMode(QAbstractItemView::InternalMove);
ui->listWidget->setResizeMode(QListView::Adjust);

ui->listWidget_2->setAutoScroll(true);
ui->listWidget_2->setAlternatingRowColors(true);
ui->listWidget_2->setDragDropMode(QAbstractItemView::InternalMove);
ui->listWidget_2->setResizeMode(QListView::Adjust);

connect(ui->listWidget, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(listWidget_DoubleClicked(QModelIndex)));
connect(ui->listWidget_2, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(listWidget_2_DoubleClicked(QModelIndex)));
}

void Widget::name_init()
{
(* ui->listWidget->item(0)).setText(QString("张一"));
(* ui->listWidget->item(1)).setText(QString("张二"));
(* ui->listWidget->item(2)).setText(QString("张三"));

(* ui->listWidget_2->item(0)).setText(QString("王一"));
(* ui->listWidget_2->item(1)).setText(QString("王二"));
(* ui->listWidget_2->item(2)).setText(QString("王三"));

}

void Widget::listWidget_DoubleClicked(const QModelIndex &index)
{
qDebug()<<(* ui->listWidget->item(index.row())).text();
}

void Widget::listWidget_2_DoubleClicked(const QModelIndex &index)
{
qDebug()<<(* ui->listWidget_2->item(index.row())).text();
}

运行结果:

41 ItemsWidget之QListWidget_控件_03 41 ItemsWidget之QListWidget_显示模式_04