感谢这位博主的分享!!!?
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();
效果:
思考:
可以拖拽item到最下面,相当于在尾部添加了一个item。
而拖拽到已存在的item上时,该item值会被覆盖。
使用这种移动模式:无法移动项目。
可以自由移动,移动时会捕捉到网格
效果图:
代码:
#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);
}
测试:
数据图:
代码:
connect(view,SIGNAL(clicked(QModelIndex)),this,SLOT(slotClicked(QModelIndex)));
void listview::slotClicked(const QModelIndex &index)
{
ui->label->setText("选择的水果是:"+index.data().toString());
}
效果: