当前位置:网站首页>QListView的使用
QListView的使用
2022-08-02 11:38:00 【物随心转】
一、介绍
QListView可以用来以列表的形式展示数据,在Qt中使用model/View结构来管理数据与视图的关系,model负责数据的存取,数据的交互则通过delegate来实现。
二、model
QT提供了一些现成的models用于处理数据项:
QStringListModel 用于存储简单的QString列表。
QStandardItemModel 管理复杂的树型结构数据项,每项都可以包含任意数据。
QDirModel 提供本地文件系统中的文件与目录信息。
QSqlQueryModel 对SQL的查询结果集进行封装
QSqlTableModel 对SQL中的table进行封装。
QSortFilterProxyModel 对另一个model执行sort and/or filter
model中存放的每项数据都有相应的"model index",由QModelIndex类来表示。每个index由三个部分构成:row,column和表明所属model的指针。对于一维的list model,column部分永远为0。
三、实例
这里分别使用QStringListModel与QStandardItemModel 展示了ListView显示数据。
2.1 首先,使用qtcreator创建一个widget项目,各种设置一律采用默认。

2.2 打开项目中的界面文件,然后我们在界面中拖入一个listview控件。
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
边栏推荐
- 腾讯云云函数SCF—入门须知
- sva 断言资料
- Create an application operation process using the kubesphere GUI
- AQS-AbstractQueuedSynchronizer
- ssm网页访问数据库数据报错
- STM32+MPU6050设计便携式Mini桌面时钟(自动调整时间显示方向)
- 划分训练集,验证集,测试集
- npm WARN deprecated [email protected] This version of tar is no longer supported, and will not receive
- 基于threejs的商品VR展示平台的设计与实现思路
- yolo格式(txt)数据集转VOC(xml)
猜你喜欢

Crack detection technology based on deep learning

CCF paper conference IEEE how to query all articles of a conference journal

深度学习100例 —— 卷积神经网络(CNN)实现mnist手写数字识别

Deep Learning 100 Examples - Convolutional Neural Network (CNN) for mnist handwritten digit recognition

sva assertion data

What is the future of smartwatches?

Shell编程之条件语句

Breaking the Boundary, Huawei's Storage Journey

How to technically ensure the quality of LED display?

MapStruct
随机推荐
划分训练集,验证集,测试集
JVM简介
从幻核疑似裁撤看如何保证NFT的安全
What is the future of smartwatches?
sqli-labs(less-11)
“纯C”实现——三子棋小游戏
idea常用插件
npm run serve启动报错npm ERR Missing script “serve“
Question about #oracle#, how to solve it?
When not to use () instead of Void in Swift
leetcode: 200. Number of islands
SQL函数 TRIM
雷克萨斯,锁死的安全,挡不住的心寒
爆款视频怎么做?这里或许有答案!
【MySQL】多表联合查询、连接查询、子查询「建议收藏」
打破千篇一律,DIY属于自己独一无二的商城
Crack detection technology based on deep learning
Create your own app applet ecosystem with applet containers
【kali-信息收集】(1.9)Metasploit+搜索引擎工具Shodan
当POC遇见RPA:RPA项目顺利实施的关键