06 json数据解析和列表控件

这篇具有很好参考价值的文章主要介绍了06 json数据解析和列表控件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

内容回顾

json数据解析

  1. json ----- 对要传输的数据进行封装的工具
    json是由json数组([]) 和 json对象({})
  2. 在qt中,对JSON数据进行处理(解析和打包)
    JSON数据处理所要包含的类:
    QJsonDocument -----它的作用是将数据转换成json文档
    QJsonArray ---- json数组,就是封装多个实实在在的数据
    QJsonObject — json对象,就是一个实实在在的数据
    对于json数据而言,他们以键值对(key-value),想要获得真正有用数据,那么就要通过该数据的key
  3. json数据的 解析流程
第一步:将以后缀为.json文件,将它转换为QFile对象
第二步:打开文件
第三步:将从文件中读取的数据转换成 QJsonDocument
第四步:一定要根据json数据格式来进行解析
第五步:从json封装的数据中,获取到数据
第六步:应用数据

解析数据通常接口

QJsonDocument类:

  1. 解析时:
参数 用途
QJsonArray array() const //通过get方法,得到QJsonDocument类中的json数组
QJsonObject object() const//通过get方法,得到QJsonDocument类中的json对象
  1. 打包时:
参数 用途
void setArray(const QJsonArray &array)//将QJsonArray打包到QJsonDocument中
void setObject(const QJsonObject &object)
  1. 将QJsonDocument和QByteArray相互转换的接口:
    静态成员函数:
参数 用途
QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = nullptr)

功能:将QByteArray数据转换成QJsonDocument
参数说明:

  • const QByteArray &json ------ 从JSON文件中读取的数据
  • QJsonParseError *error ----- QByteArray在转换成QJsonDocument,出错时,它的出错信息
    做为一个输出参数
  1. 将QJsonDocment转换成QByteArray
    普通成员函数:
参数 用途
QByteArray toJson() const
QByteArray toJson(QJsonDocument::JsonFormat format) const

功能:将QJsonDocment转换 成QByteArray,以便将数据写入到json文件中

QJsonArray类

  1. 获取json数组中的数据元素
参数 用途
QJsonValue at(int i) const

参数说明:
int i ----- 数据元素的下标
返回值:成功返回一个QJsonValue
QJsonValue它是json中封装的一个数据类型,类似于int,char
,它可以跟int 、double、QString QJsonArray QJsonObject之间可以相互转换
它代表以下6种类型之一:
06 json数据解析和列表控件,QT,json

它们的相互之间的转换使用to方法:

参数 用途
QJsonArray toArray(const QJsonArray &defaultValue) const
QJsonArray toArray() const
bool toBool(bool defaultValue = false) const
double toDouble(double defaultValue = 0) const
int toInt(int defaultValue = 0) const
QJsonObject toObject(const QJsonObject &defaultValue) const
QJsonObject toObject() const
QString toString() const
QString toString(const QString &defaultValue) const
  1. 获取数组中 元素的个数
参数 用途
int size() const

QJsonObject类

  1. 根据键值来获得真正的数据
参数 用途
QJsonValue value(const QString &key) const
QJsonValue value(QLatin1String key) const

参数说明:

  • const QString &key ------->键值就来源于json数据文档中键---- 都是字符串类型

比如: “genres”: “动作/惊悚/科幻”, ------ genres它就是键(key)
如果该键对应值为字符串,那么可以通过toString() const

一 列表控件— QListWidget

06 json数据解析和列表控件,QT,json

1.1 基本概念

当一个数据有多个时,将数据以列表的形式来显示,使用QListWidget,但是,该列表控件只负责显示,致于列表的内容是什么,它并不关心,比如:字符串,单一控件,自定义布局界面等
头文件:#include <QListWidget>
模块:QT += widgets
该类是用来显示item(列表条目),该条目通常使用QListWidgetItem(条目),该类提供了增加和删除条目的方法

1.2 创建该类对象的方法

  1. 通过构造函数来实现
QListWidget *listWidget = new QListWidget(this);
  1. 在qt 设计师,直接使用,则QT设计师来创建该对象
    06 json数据解析和列表控件,QT,json

1.2 向QListWidget控件上增加条目项

参数 用途
void addItem(const QString &label)//增加一个字符串条目项
void addItem(QListWidgetItem *item)//增加一个列表条目项
void addItems(const QStringList &labels)//增加一个字符串列表条目项
void setItemWidget(QListWidgetItem *item, QWidget *widget)

参数说明:

  • QListWidgetItem *item ----- 要给QListWidget控件设置的条目
  • QWidget *widget ---- 给QListWidgetItem条目的具体内容为一个窗口小部件,比如:一个控件或者多个控件的界面
    该函数要跟addItem(QListWidgetItem *item)一起使用,是给指定的条目设置一个widget

关于QListWidgetItem类的构造函数形式:

参数
QListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent = nullptr, int type = Type)//创建一个条目项对象,并指定该条目项的内容和图标
QListWidgetItem(const QString &text, QListWidget *parent = nullptr, int type = Type) //创建一个条目项对象,并指定该条目项的内容
QListWidgetItem(QListWidget *parent = nullptr, int type = Type)

1.3 关于条目的数目和选中的条目

参数 用途
int count() const // 列表控件中条目的数目
QListWidgetItem * currentItem() const// 用户当前选中的列表条目
int currentRow() const// 用户当前选中的列表条目行号,行号是从零开始

案例:基本增加条目的使用方法

   //情景一  显示一个字符串item
ui->listWidget->addItem("条目一");

QStringList labels; //QStringList --- 该容器是专门用来存放字符串
//给labels容器赋值的方式如下:
labels<<"条目二"<<"条目三"<<"条目四";
 //情景二 显示一个字符串列表item
ui->listWidget->addItems(labels);

//情景三 显示一个QListWidgetItem
// 创建条目QListWidgetItem  ---- 条目只带文本
QListWidgetItem* item = new QListWidgetItem("条目五");
ui->listWidget->addItem(item);

//情景四 显示一个QListWidgetItem---- 条目是一个QWidget
//[1]创建条目QListWidgetItem
QListWidgetItem* item1 = new QListWidgetItem;
//[2] 将条目对象设置给listWidget控件
ui->listWidget->addItem(item1);
  QPushButton *button = new QPushButton("&Download", this);
  //[3]给条目对象设置一个QWidget:单个控件,自定义界面
ui->listWidget->setItemWidget(item1,button);

//情景五 创建条目QListWidgetItem --- 条目带文本和图片

QListWidgetItem* iocnitem = new QListWidgetItem(QIcon(":/image/cpp.png"),"main.cpp");
ui->listWidget->addItem(iocnitem);

1.4 QListWidget常用的信号

参数 用途
void itemClicked(QListWidgetItem *item)//单击条目时,控件会发送该信号
void itemDoubleClicked(QListWidgetItem *item)//双击条目时,控件会发送该信号

当用户在代码中,建立与该信号相关的槽函数时,那么信号触发时,就会执行槽函数

06 json数据解析和列表控件,QT,json文章来源地址https://www.toymoban.com/news/detail-650658.html

到了这里,关于06 json数据解析和列表控件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React入门 - 06(TodoList 列表数据的新增和删除)

    本章内容 上一节内容我们完成了输入框中可以自由输入内容,这一节我们继续 TodoList 功能的完善:列表数据的新增和删除。 在开始之前,我们先介绍一下 React 如何渲染数组数据到界面上。打开官网,在这里明确告诉我们列表的渲染可以使用数组的 map 或者 filter 方法 一、实

    2024年01月25日
    浏览(33)
  • Qt实践录:实现http服务并解析json协议

    本文主要记录在 Qt 中实现http服务的示例,包括解析json协议数据。 很早之前,对自己写的一个工程测试,需对接一个C++写的web服务,但局域网中尚未有,于是部署之,web服务使用了cgi技术,于是找了fastcgi等库和程序,最终和nginx一道合力完成部署。当时觉得比较麻烦,C++应该

    2024年02月12日
    浏览(45)
  • Qt 5.14.2 深度解析:打造高效JSON处理利器

    Qt 5.14.2 深度解析:打造高效JSON处理利器 参考资料 Qt官方文档:QJsonDocument Qt官方文档:QJsonObject Qt官方文档:QJsonArray Qt官方文档:QJsonValue 引言 在当今的软件开发世界中,JSON(JavaScript Object Notation)已经成为了数据交换的标准格式。Qt,作为一个跨平台的C++框架,自然也提供

    2024年03月10日
    浏览(49)
  • Python 自学 day06 JSON 数据传输,折线图,柱状图,动态柱状图

    1.1  什么是 JSON 答: JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据.                        JSON本质上是一个 带有特定格式的字符串。 1.2 JSON 的主要功能 答: json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递

    2024年02月16日
    浏览(40)
  • 『python爬虫』06. 数据解析之re正则解析(保姆级图文)

    欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 Regular Expression, 正则表达式, ⼀种使⽤表达式的⽅式对字符串,进⾏匹配的语法规则(按照一定规则的查找) ⽹⻚源代码本质上就是⼀个超⻓的字符串, 用正则就好像是在我们的txt中查找指定

    2024年02月02日
    浏览(69)
  • QT给控件绑定数据:setProperty

    setProperty给控件绑定值,property获取控件绑定的值,可以自定义所要设定的值得类型。 给每一个自定义widget设定结构体类型的值,方便后面取出widget的信息。 定义一个存储播放框播放信息的struct结构体,需要宏定义结构体指针类型,后面获取property的时候编译器才能识别。 每

    2024年02月13日
    浏览(47)
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉列表的数据绑定以及自定义系统字典列表控件

    在我们开发的前端项目中,往往为了方便,都需对一些控件进行自定义的处理,以便实现快速的数据绑定以及便捷的使用,本篇随笔介绍通过抽取常见字典列表,实现通用的字典类型绑定;以及通过自定义控件的属性处理,实现系统字典内容的快捷绑定的操作。 在我们创建下

    2024年02月08日
    浏览(58)
  • qt学习:json数据文件读取写入

    目录 什么是json 基本格式 例子  解析json文件数据到界面上 组合json数据文档对象 json是一种轻量级的数据交互格式,简单来说,json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互 以键值对的形式存放 键-----字符串 值------基本数据类型,字

    2024年01月24日
    浏览(46)
  • Android解析JSON数据

    Android解析JSON数据的方法主要有两种:JSONObject和GSON库解析。 1. JSONObject解析: JSONObject是Android内置的JSON解析库,通过它可以将JSON字符串转换为Java对象或将Java对象转换为JSON字符串。使用JSONObject进行JSON解析的步骤如下: 1)将JSON字符串封装成JSONObject对象。 ``` String jsonString

    2024年03月15日
    浏览(64)
  • Android 解析JSON数据

    第一种使用JSONObject解析JSON数据,这是Android中最基本的数据解析方式 第二种方式通过GSON去解析JSON数据  同样的数据格式 GSON的数据解析看起来代码量相对小一点,但所创建的类也是必须的 第一个支持的类,此类为自定义名字,为了方便随意起的,但在项目中要正规取名,见

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包