操作系统: 统信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);
listview->setGeometry(50, 20, 100, 200);
QStringList list;
list.append("苹果");
list.append("香蕉");
list.append("桃子");
QStringListModel *listmodel = new QStringListModel(list);
listview->setModel(listmodel);
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);
listview->setGeometry(50, 20, 100, 200);
QStringList list;
list.append("苹果");
list.append("香蕉");
list.append("桃子");
QStringListModel *listmodel = new QStringListModel(list);
listview->setModel(listmodel);
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();
}