QListWidget,QT列表控件,与QListView控件类似。
两者的本质区别是:QListWidget是基于Item,而QListView是基于Model的。
QListWidget是继承QListView,QListView是基于Model的,需要自己来建模(如建立QStringListModel,QSqlTableModel等),保存数据,这样就大大降低了数据冗余,提高了程序的效率,但是需要我们对数据建模有一定的了解,而QListWidget是一个升级版本的QListView,它已经为我们建立了一个数据存储模型QListWidgetItem,操作方便,直接调用addItem即可添加Item项(Icon,文字)。
在QListView中添加Item项需要借助QAbstractListModel,如:
QStringListModel* slm = new QStringListModel(this);
QStringList* sl = new QStringList();
sl->append("asdfsadfsa");
sl->append("asdfsadfsa");
sl->append("asdfsadfsa");
slm->setStringList(*sl);
ui->listView->setModel(slm);
delete sl;
在QListWidget中添加Item项可以直接addItem,如:
QListWidget list;
list.setViewMode(QListWidget::IconMode );
list.setResizeMode(QListWidget::Adjust);
list.setMovement(QListWidget::Static);
for(int i =0; i < 100 ; i ++)
{
QListWidgetItem *item = new QListWidgetItem();
list.addItem(Item);
}
我们可以通过信号和槽的方式对列表控件的选项进行响应,如
connect(list,SIGNAL(currentTextChanged(QString)),this,SLOT(setText(QString)));
QListWidget常用API:
setIconSize(QSize(212,145)):设置单元项大小,
setMovement(QListView::Static):设置单元项不可拖动,(Static、Free、Snap)
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff):设置垂直滚动条显示方式(ScrollBarAsNeeded:按需显示,ScrollBarAlwaysOff:隐藏,ScrollBarAlwaysOn:常显)
QListWidgetItem常用API:
setSizeHint(QSize(209,144)):设置单元项的宽度和高度
setIcon(QIcon(imgPix.scaled(QSize(201,135),Qt::IgnoreAspectRatio,Qt::SmoothTransformation))):设置图像
其中,scaled为缩放图像方法,
(FastTransformation:低分辨率的图片,SmoothTransformation:高分辨率的图片)