参考:QT常用控件——QListView控件-CSDN博客
感谢这位博主的分享!!!
代码:
QListView listview; //创建QListView对象
QStringList list; //创建数据显示列表
list.append("苹果");
list.append("香蕉");
list.append("桃子");
//使用数据列表创建数据显示模型
QStringListModel *listmodel = new QStringListModel(list);
listview.setModel(listmodel); //设置模型到listview上
listview.setMovement(QListView::Free); //设置数据可以自由拖动
listview.setSpacing(2); //设置数据的间距
listview.show();
效果:
思考:
setMovement
1.QListView::Free下:
可以拖拽item到最下面,相当于在尾部添加了一个item。
而拖拽到已存在的item上时,该item值会被覆盖。
2.listview.setMovement(QListView::Static);
使用这种移动模式:无法移动项目。
3.listview.setMovement(QListView::Snap);
可以自由移动,移动时会捕捉到网格
效果图:
void setSpacing(int space)
代码:
#include "listview.h"
#include "ui_listview.h"
listview::listview(QWidget *parent) :
QWidget(parent),
ui(new Ui::listview)
{
ui->setupUi(this);
view=new QListView; //创建QListView对象
view->setGeometry(30,30,100,300);
QStringList list; //创建数据显示列表
list.append("苹果");
list.append("香蕉");
list.append("桃子");
//使用数据列表创建数据显示模型
QStringListModel *listmodel = new QStringListModel(list);
view->setModel(listmodel); //设置模型到listview上
view->setMovement(QListView::Snap); //设置数据可以自由拖动
view->setSpacing(2); //设置数据的间距
view->show();
}
listview::~listview()
{
delete ui;
}
void listview::on_spinBox_valueChanged(int arg1)
{
view->setSpacing(arg1);
}
测试:
数据图:
clicked(QModelIndex)信号的使用
代码:
connect(view,SIGNAL(clicked(QModelIndex)),this,SLOT(slotClicked(QModelIndex)));
void listview::slotClicked(const QModelIndex &index)
{
ui->label->setText("选择的水果是:"+index.data().toString());
}
效果:
参考:
qt的ListView中设置setIndexWidget_listview 默认index-CSDN博客
代码:
listView与widget的组合------相关demo
QListView view;
QStandardItemModel *model = new QStandardItemModel(&view);
view.setModel(model);
//view与model绑定
//view是页面
//model是背后的数据
for(int i = 0; i < 5; i++) {
QStandardItem *item = new QStandardItem(QString::number(i));
model->appendRow(item);
//model与item:
//model中包含许多的item
//item就是model的一组数据
QModelIndex index = model->indexFromItem(item);
//根据item得到model中对应的modelIndex
QCheckBox *box = new QCheckBox( &view);
box->setCheckable(true);
box->setCheckState(Qt::Unchecked);
box->setText("ssss");
view.setIndexWidget(index, box);
//对应关系:item-----index-----widget
}
view.show();
效果图: