QT常用控件——QListView控件

操作系统: 统信UOSv20
Qt版本: 5.11.3

一,简单介绍

QListView将存储在模型中的项显示为简单的非层次列表或图标集合。此类用于提供以前由QListBox和QIconView类提供的列表和图标视图,但使用Qt的模型/视图体系结构提供的更灵活的方法。QListView类是模型/视图类之一,是Qt的模型/视图框架的一部分。

项目 内容
Header QListView
qmake QT += widgets
Inherits QAbstractItemView

二,常用方法和信号

1. 常用方法

方法 描述
void setModel(QAbstractItemModel *model) 设置模型
void setMovement(Movement movement) 设置数据是否可以任意拖动
void setSpacing(int space) 设置数据间距

2. QListView::Movement类型

类型 描述
QListView::Static 0 用户无法移动项目
QListView::Free 1 用户可以自由移动项目
QListView::Snap 2 用户可以自由移动项目,移动时项目会捕捉到指定的网格

3. 常用信号

信号 描述
void QAbstractItemView::clicked(const QModelIndex &index) 点击触发该信号

三,使用介绍

1. 创建对象及基本设置

QListView *listview = new QListView(this);       //创建QListView对象
listview->setGeometry(50, 20, 100, 200);         //设置位置和大小

QStringList list;                                //创建数据显示列表
list.append("苹果");
list.append("香蕉");
list.append("桃子");

//使用数据列表创建数据显示模型
QStringListModel *listmodel = new QStringListModel(list);
listview->setModel(listmodel);                   //设置模型到listview上

listview->setMovement(QListView::Free);          //设置数据可以自由拖动
listview->setSpacing(2);                         //设置数据的间距

在这里插入图片描述

2. clicked信号的使用

头文件添加void slotClicked(const QModelIndex &index);槽函数

#include "widget.h"
#include "ui_widget.h"

#include <QDebug>
#include <QListView>
#include <QStringListModel>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    
    
    ui->setupUi(this);

    QListView *listview = new QListView(this);       //创建QListView对象
    listview->setGeometry(50, 20, 100, 200);         //设置位置和大小

    QStringList list;                                //创建数据显示列表
    list.append("苹果");
    list.append("香蕉");
    list.append("桃子");

    //使用数据列表创建数据显示模型
    QStringListModel *listmodel = new QStringListModel(list);
    listview->setModel(listmodel);                   //设置模型到listview上

    connect(listview, SIGNAL(clicked(const QModelIndex)),
            this, SLOT(slotClicked(const QModelIndex)));
}

Widget::~Widget()
{
    
    
    delete ui;
}

void Widget::slotClicked(const QModelIndex &index)
{
    
    
    qDebug() << "选择的水果是:" << index.data().toString(); 
}


猜你喜欢

转载自blog.csdn.net/qq_43657810/article/details/118273184