作为 GUI 框架,丰富的控件和灵活的事件机制是不可或缺的,Qt 在这一方面做得非常优秀,并且qt在企业中广泛应用,那qt中显示json数据的控件怎么使用?下面来我们就来给大家讲解一下。
首先引用如下头文件
#include <QJsonDocument> #include <QJsonArray> #include <QJsonObject> #include <QFile>
“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.创建的JSON文件如果不指定路径,则会自动生成在该项目的Debug目录下
2.对int等类型在Line Edit上显示时,注意利用QString::number()来进行格式转化
3.再次保存(修改)文件时,记得用resize()来清空原文件,否则会续写
qt如何打包程序?
打包 Qt 程序,通常选用以 release 模式生成的可执行文件。和 debug 模式相比,release 模式生成的可执行文件体积更小,运行效率更快。
Qt Creator 默认以 debug 模式生成可执行文件,如下图所示,可以手动修改 Qt Creator 以 release 模式生成可执行文件:
选择“Release”之后,再次运行程序,生成的可执行文件可以在下图所示的路径中找到:
找到可执行文件之后,将其拷贝到一个空的文件夹,比如笔者将其拷贝到了新建的 D:\StuInfoFile 文件夹中,如下图所示:
此时的 StuInfoFile.exe 是无法运行的,双击它系统会提示类似“找不到 xxx.dll”的错误信息。
在“开始”中找到 Qt 命令行程序并打开,如下图所示:
在命令行中,先执行 "cd D:\StuInfoFile" 命令进入 StuInfoFile 文件夹,然后再执行 "windeployqt StuInfoFile.exe" 命令。windeployqt 是 Qt 提供的 Windows 平台打包工具,它能找到 StuInfoFile.exe 可执行文件需要的所有动态链接库,并将它们拷贝到当前文件夹中。
成功执行命令之后,StuInfoFile 文件夹内会增加很多文件夹和文件(如下图所示),这些都是 StuinfoFile.exe 执行所需要的。
再次双击 StuInfoFile.exe,如果它可以成功执行,表明打包操作是成功的。我们可以直接将 StuInfoFile 文件夹分享给他人,只要是 Windows 平台,都可以直接点击运行 StuinfoFile.exe 文件。
Qt 程序进行打包并将它们统一存放到指定的空文件夹里,这样开发人员再找文件的时候就能节省很多时间哦!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。
推荐阅读: