qt中显示json数据的控件怎么使用?qt如何打包程序?

阳光 2022-03-09 17:15:28 java常见问答 7506

作为 GUI 框架,丰富的控件和灵活的事件机制是不可或缺的,Qt 在这一方面做得非常优秀,并且qt在企业中广泛应用,那qt中显示json数据的控件怎么使用?下面来我们就来给大家讲解一下。

首先引用如下头文件

#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QFile>

下面先用一个例子说明

qt中显示json数据的控件怎么使用?qt如何打包程序?.jpg

“Save Information”按钮的槽函数如下

void ftpWindow::on_saveInfo_btn_clicked()
{
    //先读取各个Line Edit控件的值
    QString ip = ui - > ip_le - > text();
    int port = ui - > port_le - > text()
        .toInt();
    QString account = ui - > account_le - > text();
    QString password = ui - > password_le - > text();
    //以ReadWrite模式打开文件,没有该文件时会自动创建
    QString fileName = "userinfo.json";
    QFile file(fileName);
    file.open(QIODevice::ReadWrite | QIODevice::Text);
    //将JSON数据写入JSON文件中
    QJsonDocument jdc();
    QJsonObject obj;
    obj.insert("account", account);
    obj.insert("password", password);
    obj.insert("port", port);
    obj.insert("ip", ip);
    jdc.setObject(obj);
    file.resize(0); //清空文件
    file.write(jdc.toJson());
    file.flush();
    file.close();
}

这样一来,我们就可以保存JSON格式的数据文件了

接着是在界面加载时把之前保存下的数据覆盖到Line Edit中

void ftpWindow::reloadInfo()
{
    QString fileName = "userinfo.json";
    QFile file(fileName);
    file.open(QIODevice::ReadWrite | QIODevice::Text);
    QJsonDocument jdc(QJsonDocument::fromJson(file.readAll()));
    if (!jdc.isEmpty())
    {
        QJsonObject obj = jdc.object();
        ui - > account_le - > setText(obj["account"].toString());
        ui - > password_le - > setText(obj["password"].toString());
        ui - > port_le - > setText(QString::number(obj["port"].toInt())); //port是int型
        ui - > ip_le - > setText(obj["ip"].toString());
    }
}

这是保存成功后JSON文件的内容

1.jpg

关闭程序,再次运行打开

2.jpg

显示成功

需要注意的几点:

1.创建的JSON文件如果不指定路径,则会自动生成在该项目的Debug目录下

2.对int等类型在Line Edit上显示时,注意利用QString::number()来进行格式转化

3.再次保存(修改)文件时,记得用resize()来清空原文件,否则会续写

qt如何打包程序?

打包 Qt 程序,通常选用以 release 模式生成的可执行文件。和 debug 模式相比,release 模式生成的可执行文件体积更小,运行效率更快。

Qt Creator 默认以 debug 模式生成可执行文件,如下图所示,可以手动修改 Qt Creator 以 release 模式生成可执行文件:

3.jpg

选择“Release”之后,再次运行程序,生成的可执行文件可以在下图所示的路径中找到:

4.jpg

找到可执行文件之后,将其拷贝到一个空的文件夹,比如笔者将其拷贝到了新建的 D:\StuInfoFile 文件夹中,如下图所示:

5.jpg

此时的 StuInfoFile.exe 是无法运行的,双击它系统会提示类似“找不到 xxx.dll”的错误信息。

在“开始”中找到 Qt 命令行程序并打开,如下图所示:

6.jpg

在命令行中,先执行 "cd D:\StuInfoFile" 命令进入 StuInfoFile 文件夹,然后再执行 "windeployqt StuInfoFile.exe" 命令。windeployqt 是 Qt 提供的 Windows 平台打包工具,它能找到 StuInfoFile.exe 可执行文件需要的所有动态链接库,并将它们拷贝到当前文件夹中。

成功执行命令之后,StuInfoFile 文件夹内会增加很多文件夹和文件(如下图所示),这些都是 StuinfoFile.exe 执行所需要的。

7.jpg

再次双击 StuInfoFile.exe,如果它可以成功执行,表明打包操作是成功的。我们可以直接将 StuInfoFile 文件夹分享给他人,只要是 Windows 平台,都可以直接点击运行 StuinfoFile.exe 文件。

Qt 程序进行打包并将它们统一存放到指定的空文件夹里,这样开发人员再找文件的时候就能节省很多时间哦!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。

推荐阅读:

sql语句建表如何添加外键?sql语句执行原理是什么?

struts如何配置文件?struts配置文件介绍

java死循环会报错吗?java死循环如何排查?