Qt提供QListWidget类列表框控件用来加载并显示多个列表项。QListWidgetItem类就是列表项类。 QListWidget类列表框控件支持两种列表项显示方式,即QListView::IconMode和QListView::ListMode。
UI属性介绍
autoScroll;//拖动时有滚动条
editTriggers;//编辑触发方式
tabKeyNacigation;//tab键的方式
DragDropMode;//拖放项目的模式
alternatingRowColors;//不同行不同颜色
slletionMode;//选择模式
textElideMode;//文本模式,当文本超出边界时,会以“...”显示,前提是关掉滚动条
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();
}
运行结果: