当前位置: 首页 > news >正文

江苏华建建设股份有限公司网站网站开发服务公司

江苏华建建设股份有限公司网站,网站开发服务公司,网站建设运营推广,广州市公司网站建设品牌Qt 快速保存配置的方法 一、概述二、代码1. QFileHelper.cpp2. QSettingHelper.cpp 三、使用 一、概述 这里分享一下,Qt界面开发时,快速保存界面上一些参数配置的方法。 因为我在做实验的时候,界面上可能涉及到很多参数的配置,我…

Qt 快速保存配置的方法

  • 一、概述
  • 二、代码
    • 1. QFileHelper.cpp
    • 2. QSettingHelper.cpp
  • 三、使用

一、概述

这里分享一下,Qt界面开发时,快速保存界面上一些参数配置的方法。

因为我在做实验的时候,界面上可能涉及到很多参数的配置,我也不大可能自己去记录每一个参数的值,不保存这些,下次启动的时候要自己手输就非常浪费时间,因此我用了Qt的Meta-Object 系统,结合了ObjectName,把配置保存为json文本。这就非常方便的实现了我想要的功能。

为了改动不大,为了避免配置耦合,还是采用分离的宏定义的方式去做会更好一些。暂时没有想到用类的继承去做,有建议的话可以在评论区交流一下呐。

二、代码

1. QFileHelper.cpp

这个函数就是保存和读写文本的通用配置,在写文件的时候,不存在目录的文件也会先创建目录文件的父目录再去写。

bool QFileHelper::writeAllText(const QString &fileName, QString &text)
{QFile file(fileName);QDir dir(fileName);QString parentPath = dir.absolutePath().replace(dir.absolutePath().split("/", QString::SkipEmptyParts).last(), "");if(!dir.exists(parentPath)){if(!dir.mkdir(parentPath)){return false;}}if (!file.open(QIODevice::WriteOnly | QIODevice::Text))return false;QTextStream in(&file);in.setCodec("utf-8");in<<text;QSettingHelper::Instance()->setLastOpenFileDir(QFileInfo(fileName).dir().absolutePath());file.close();return true;
}bool QFileHelper::readAllText(const QString &fileName, QString &text)
{QFile file(fileName);if (!file.open(QIODevice::ReadOnly | QIODevice::Text))return false;QTextStream in(&file);in.setCodec("utf-8");text = in.readAll();QSettingHelper::Instance()->setLastOpenFileDir(QFileInfo(fileName).dir().absolutePath());file.close();return true;
}

2. QSettingHelper.cpp

定义了保存、加载配置的宏,配置文件我是放在 当前应用程序的/config/源文件结构.config

每一个文件用了这个宏都会根据 源文件名(包含路径) 去保存里面的QSPBox、QDoubleSPbox的值。

下面目前没有保存 QLineEdit的值,但是可以继续扩展。

#include <common/QFileHelper.h>
#include <QJsonDocument>
#include <QJsonObject>
#include <QCoreApplication>
#include <QSpinBox>
#include <QDoubleSpinBox>#define LOADCONFIG() \
{\QString json;\QString fileName = QCoreApplication::applicationDirPath() + "/configs/" + QString(__FILE__).split(".")[0] + ".config";\if(QFileHelper::readAllText(fileName, json )){\QJsonDocument jsDoc  = QJsonDocument::fromJson(json.toUtf8());\QJsonObject jsObj = jsDoc.object();\QDoubleSpinBox * d_spbox = nullptr;\QSpinBox * spbox = nullptr;\for(auto it : jsObj.keys()){\QObject * obj = this->findChild<QObject *>(it);\if(!obj) continue;\if(d_spbox = qobject_cast<QDoubleSpinBox*>(obj)){\d_spbox->setValue(jsObj.value(d_spbox->objectName()).toDouble());\}\if(spbox = qobject_cast<QSpinBox*>(obj)){\spbox->setValue(jsObj.value(spbox->objectName()).toInt());\}\}\}\
}#define SAVECONFIG() \
{\QString fileName = QCoreApplication::applicationDirPath() + "/configs/" + QString(__FILE__).split(".")[0] + ".config";\QList<QSpinBox *> spbox_list = this->findChildren<QSpinBox *>();\QList<QDoubleSpinBox *> double_spbox_list = this->findChildren<QDoubleSpinBox *>();\QJsonObject jsObj;\for(auto it : spbox_list ){\jsObj.insert(it->objectName(), it->value());\}\for(auto it : double_spbox_list){\jsObj.insert(it->objectName(), it->value());\}\QJsonDocument jsDoc(jsObj);\QString json =  jsDoc.toJson();\if(QFileHelper::writeAllText(fileName,  json)){\}else{\}\
}

三、使用

因为我只是在构造和析构的时候用了,当然你可以自己定时去保存都可以。

ShapeDetectionWG::ShapeDetectionWG(QWidget *parent) :QWidget(parent),ui(new Ui::ShapeDetectionWG)
{ui->setupUi(this);ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);qRegisterMetaType<Surface_mesh>("Surface_mesh&");//构造函数加载配置LOADCONFIG();
}ShapeDetectionWG::~ShapeDetectionWG()
{//析构前保存配置SAVECONFIG();delete ui;
}

保存的效果如下
在这里插入图片描述
在子目录下也会有对应的配置
在这里插入图片描述
保存的配置如下这种:
在这里插入图片描述
如下图所示,我是在ui文件中去改的,这些键值就是我们设置的对象名,也就是对象查看器那栏的对象名称。因此对象命名好一点对于自己查看是非常有帮助的。
在这里插入图片描述

http://www.yayakq.cn/news/468259/

相关文章:

  • 建站系统软件有哪些如何做网站详细步骤图
  • 做网站都有哪些软件重庆企业网站推广策略
  • 信阳 网站建设wordpress html
  • 做电影网站需要服务器三明市住房与建设局网站
  • 西安微网站制作destoon做众筹网站
  • 网站建设空心正方形男男床上爱做 网站
  • 怎样买网站建设网站开发框架技术
  • 为shopify做推广的网站施工建设集团网站
  • 方维网站后台提示验证码错误邯郸seo营销
  • 图片网站优化网站临时域名
  • 新手做自己的网站网站制作要学多久
  • 网站建设技术入股协议用手机怎么做网页
  • 饰品公司网站建设策划书桂城网站制作公司
  • 公司做企业网站须知婚庆公司经营范围
  • 哪家网站雅虎全球购做的好营销内容包括哪些方面
  • WordPress 4.9添加备案号上海网络公司seo
  • 做视频网站用什么语言广告创意设计图片赏析
  • 网站建设推荐华网天下如何粘贴网站统计代码
  • 网站域名注销流程厦门关键词优化软件
  • 网站建设公司兴田德润可信赖物流网站有哪些
  • 开通微网站网站建设 无法打开asp
  • 互联网公司可通过数据分析人们的哪些方面点击排名优化
  • 沈阳哪里做网站北京网页设计公司兴田德润网址多少
  • o2o网站建设教程注册公司银行开户需要多少钱
  • 网站建设胶州家园汕头推广平台
  • 中国建设银行贵州分行网站东莞有什么比较好的网站公司
  • 南通网站建设方案iis网站属性怎么打开
  • 做博客的网站有哪些wordpress 单栏 宽屏
  • 云浮住房和城乡建设部官方网站南宁网站seo外包
  • 网站推广如何收费php网站如何攻击