QtApplets-实时读取配置文件

226 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 头图

QtApplets-实时读取配置文件

今天测试小姐姐跑过来,弱弱的问我为什么程序修改了配置文件没有生效,必须重新启动程序才可以,经过我们一番友好的沟通后,测试小姐姐表示要修复一下这个BUG那么就开始搞起来。


QtApplets-实时读取配置文件1 读取配置文件2 实现'实时'读取3 效果演示☞ 源码

关键字: QTimerQSettingini文件实时读取Qt

1 读取配置文件

这里不做深层的内容,仅仅研究读取的问题,这个很简单。直接上代码,只有一句是有用的,下面那一句是用来在界面显示的。

 void Widget::readConfig()
 {
     QSettings *config = new QSettings("./config.ini",QSettings::IniFormat);
     config->beginGroup("TestNode");
     ui->textBrowser->append(config->value("TEST").toString());
     config->endGroup();
 ​
 }

2 实现'实时'读取

其实说是实时读取,还不如说是定时读取呢,这里我使用了定时器实现,不知道是不是我没有仔细学习QSettings类,是不是应该有部分代码实时可以实时检测配置文件是否发生改变呢,这里贴上完整代码

 #include "widget.h"
 #include "ui_widget.h"
 #include <QDebug>
 #include <QVariant>
 Widget::Widget(QWidget *parent)
     : QWidget(parent)
     , ui(new Ui::Widget)
 {
     ui->setupUi(this);
     this->setWindowTitle("QSettingTimer");
     mTimer = new QTimer;
     connect(mTimer,&QTimer::timeout,this,&Widget::readConfig);
 }
 ​
 Widget::~Widget()
 {
     mTimer->stop();
     delete mTimer;
     mTimer = nullptr;
     delete ui;
 }
 ​
 ​
 void Widget::on_pushButton_clicked()
 {
     readConfig();
 }
 ​
 void Widget::readConfig()
 {
     QSettings *config = new QSettings("./config.ini",QSettings::IniFormat);
     config->beginGroup("TestNode");
     ui->textBrowser->append(config->value("TEST").toString());
     config->endGroup();
 ​
 }
 ​
 void Widget::on_checkBox_stateChanged(int arg1)
 {
     if(arg1 != 0)
     {
         mTimer->start(1000);
     }
     else
     {
         if(mTimer->isActive())
             mTimer->stop();
     }
 }
 ​

3 效果演示

这里我使用的是VS编译的,没有对中文做处理,如果大家的配置文件中有中文需求,可以加上对中文的处理,如果使用MinGW则没有问题。 dddd

☞ 源码

源码链接:GitHub仓库自取

使用方法:☟☟☟