当前位置:网站首页>The use of QListView
The use of QListView
2022-08-02 11:46:00 【turn things around】
一、介绍
QListViewCan be used to display data in the form of a list,在Qt中使用model/View结构来管理数据与视图的关系,model负责数据的存取,The interaction of data is passeddelegate来实现.
二、model
QT提供了一些现成的models用于处理数据项:
QStringListModel 用于存储简单的QString列表.
QStandardItemModel 管理复杂的树型结构数据项,每项都可以包含任意数据.
QDirModel 提供本地文件系统中的文件与目录信息.
QSqlQueryModel 对SQL的查询结果集进行封装
QSqlTableModel 对SQL中的table进行封装.
QSortFilterProxyModel 对另一个model执行sort and/or filter
modelEach item of data stored in "model index",由QModelIndex类来表示.每个index由三个部分构成:row,columnand indicate belongingmodel的指针.对于一维的list model,columnpart is always0.
三、实例
这里分别使用QStringListModel与QStandardItemModel 展示了ListView显示数据.
2.1 首先,使用qtcreator创建一个widget项目,All settings are defaulted.
2.2 Open the interface file in the project,Then we drag and drop one into the interfacelistview控件.
2.3 然后,打开mainwindow.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QStringListModel>
#include <QStandardItemModel>
#include <QModelIndex>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
public:
QStringListModel *Model;
QStandardItemModel *ItemModel;
void init();
private slots:
void showClick(QModelIndex index);
};
#endif // MAINWINDOW_H
打开mainwindow.cpp文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
init();
}
void MainWindow::init()
{
// QStringListModel的使用
// QStringList strlist;
// strlist<<"A"<<"B"<<"C"<<"D";
// Model = new QStringListModel(strlist);
// ui->listView->setModel(Model);
// Model = new QStringListModel(this);
// Model->setStringList(QStringList()<<"语文"<<"数学"<<"英语");
// ui->listView->setModel(Model);
ItemModel = new QStandardItemModel(this);
QStringList strList; // 需要展示的数据
strList.append("A");
strList.append("B");
strList.append("C");
strList.append("D");
strList.append("E");
strList.append("F");
strList.append("G");
int nCount = strList.size();
for(int i = 0; i < nCount; i++)
{
QString string = static_cast<QString>(strList.at(i));
QStandardItem *item = new QStandardItem(string);
ItemModel->appendRow(item);
}
ui->listView->setModel(ItemModel); // listview设置Model
ui->listView->setFixedSize(200,300);
// 绑定事件
connect(ui->listView,SIGNAL(clicked(QModelIndex)),this,SLOT(showClick(QModelIndex)));
}
void MainWindow::showClick(QModelIndex index)
{
QString strTemp;
strTemp = index.data().toString();
QMessageBox msg;
msg.setText(strTemp);
msg.exec();
}
MainWindow::~MainWindow()
{
delete ui;
}
运行结果
参考:
QT--QlistView 简单应用_yifanmoon的博客-CSDN博客_qlistview
边栏推荐
猜你喜欢
随机推荐
QT笔记——QT类反射机制简单学习
基于深度学习的裂缝检测技术
半夜赶工制作简报的我好想说 : 确定了,最终稿就是这样
观察者(observer)模式(二) —— 实现线程安全的监听器
10份重磅报告 — 展望中国数字经济未来
JVM简介
力扣704-二分查找
云原生(三十) | Kubernetes篇之应用商店-Helm介绍
19、商品微服务-srv层实现
学习经验分享之七:YOLOv5代码中文注释
darknet训练yolov4模型
使用无界队列的线程池会导致内存飙升吗?
基于深度学习的裂缝检测技术
小程序插件让开发者受益的几个理由
翻译英语的软件-免费翻译软件-各种语言互相翻译
“纯C”实现——三子棋小游戏
Idea 全局搜索(idea如何全局搜索关键字)
AQS-AbstractQueuedSynchronizer
Mysql事务隔离级别与MVCC(多版本并发控制)
记录代码