参考: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();

效果:

QListView学习-LMLPHP

思考:

setMovement

1.QListView::Free下:

可以拖拽item到最下面,相当于在尾部添加了一个item。

而拖拽到已存在的item上时,该item值会被覆盖。

2.listview.setMovement(QListView::Static);

使用这种移动模式:无法移动项目。

3.listview.setMovement(QListView::Snap);

可以自由移动,移动时会捕捉到网格

效果图:

QListView学习-LMLPHP

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);
}

测试:

QListView学习-LMLPHP

数据图:

QListView学习-LMLPHP

clicked(QModelIndex)信号的使用

代码:

connect(view,SIGNAL(clicked(QModelIndex)),this,SLOT(slotClicked(QModelIndex)));
void listview::slotClicked(const QModelIndex &index)
{
    ui->label->setText("选择的水果是:"+index.data().toString());
}

效果:

QListView学习-LMLPHP

参考:

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();

效果图:

QListView学习-LMLPHP

 

12-22 12:37