QListView学习

发布时间:2023年12月21日

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

效果:

文章来源:https://blog.csdn.net/weixin_51883798/article/details/135126832
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。