Qt 文件初始化配置ini/conf类型读写

学习目标: 文件初始化配置

前置环境

运行环境:qt creator 4.12

学习内容

INI 文件是一种常见的配置文件格式,它通常用于存储应用程序或系统的设置和参数。INI 文件的格式很简单,由以下几个部分组成:

  1.     节(Section):
    1.      节用方括号括起来,如 [General]、[Network] 等。
    2.     节用于将配置项进行分组,方便管理和组织。 
  2.     键值对(Key-Value Pair):
    1.      键值对由键和值组成,用等号分隔,如 Name=John、Port=8080。
    2.     键通常是一个字符串,用于标识配置项。 
    3.      值可以是字符串、数字、布尔值等各种数据类型。
  3.     注释:
    1.      注释用分号或者井号开头,如 ; This is a comment。
    2.     注释可以用于解释配置项的含义和用途。 

    例如:

[General]
; General settings
Name=MyApplication
Version=1.2.3
Language=en_US

[Network]
; Network settings
ServerAddress=192.168.1.100
Port=8080
Timeout=30

[Database]
; Database settings
Host=localhost
User=myuser
Password=secret
Database=mydb

INI 文件的优点包括:

简单易懂的格式,容易编辑和维护。
跨平台兼容,可在 Windows、Linux 和 macOS 等系统上使用。
可以使用文本编辑器打开和修改,方便人工编辑。
可以使用编程语言方便地读取和写入配置信息。

详细主要代码

#include <QCoreApplication>

#include<QSettings>
#include<QDebug>
#include<QDateTime>
void create_ini(){
    //创建mysql.ini文件 QSettings::IniFormat是windwos配置文件,后缀是ini   unix则是QSettings::NativeFormat .conf
    QSettings *sqlinit =new QSettings("mysql",QSettings::IniFormat);
    sqlinit->clear();
    sqlinit->setValue("Database/ip","127.0.0.1");
    sqlinit->setValue("Database/port","3306");
    sqlinit->setValue("Database/user","root");
    sqlinit->setValue("Database/pwd","111111");
     //因中文文件操作乱码  使用toSecsSinceEpoch  1970 年 1 月 1 日 00:00:00 UTC 纪元差 17891566544
    sqlinit->setValue("/network/datetime",QDateTime::currentDateTime().toSecsSinceEpoch());

    sqlinit->sync();
    delete  sqlinit;

    //方法2多次创建QSetting对象  为后续的配置文件操作提供了上下文信息。
    /*
    在 Windows 平台上,配置文件会存储在注册表中,路径类似于 HKEY_CURRENT_USER\Software\4399\Star Runner。
    在 macOS 和 Linux 平台上,配置文件会存储在用户的配置目录中,路径类似于 ~/.config/4399/mysql.conf。
    */
    QCoreApplication::setOrganizationName("4399");
    QCoreApplication::setOrganizationDomain("4399.com");
    QCoreApplication::setApplicationName("mysql");
    QSettings settings; //自带上列属性
}

void ini_read(){
    QSettings* sqlRead=new QSettings("mysql",QSettings::IniFormat);
    QString ip=sqlRead->value("Database/ip").toString();
    uint64_t port =sqlRead->value("Database/port").toUInt();
    QDateTime dateTime = QDateTime::fromSecsSinceEpoch(sqlRead->value("network/datetime", 0).toLongLong());
    QString time = dateTime.date().toString();

    qDebug() << ip << port << time;

    delete sqlRead;

}
void  ini_write(){
    QSettings *sqlwr =new QSettings("mysql",QSettings::IniFormat);

    sqlwr->beginGroup("redis");

    sqlwr->setValue("/ip","127.0.0.1");
    sqlwr->setValue("/port","8000");

    sqlwr->endGroup();
    sqlwr->sync(); //因为存储在缓冲区中,使用sync落盘

    delete sqlwr;

}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    //写入操作
    create_ini();
    //读取操作
    ini_read();

    ini_write();

    //一次性全部读取
    QSettings setting("mysql",QSettings::IniFormat);
    setting.sync();
    foreach(QString key,setting.allKeys())
    {
        qDebug()<<key.toUtf8().data()<<":"<<setting.value(key).toString().toUtf8().data();
    }


    return a.exec();
}

总结:

创建2种方法,1种直接new 第二种先设置参数,再new 对象默认使用预先设置的参数

IniFormat是windwos配置文件,后缀是ini   unix则是QSettings::NativeFormat .conf

读: 使用values ,allkeys读取全部信息

写: 使用setValues,因为每次写入缓冲区,需要持久化则调用asyn落盘操作。
 

 最后附上源代码链接
对您有帮助的话,帮忙点个star

29-INI · jbjnb/Qt demo - 码云 - 开源中国 (gitee.com)

VS2010(Visual Studio 2010)是一个集成开发环境,主要用于.NET框架下的Windows应用程序开发。而Qt是一个跨平台的C++应用程序开发框架,常用于创建GUI界面和网络应用,包括支持PJSIP(Practical Jitsi SIP Stack),一个开源的SIP库。 要在VS2010环境中结合Qt4.8.5处理PJSIP的配置文件(pjsip.conf),你需要做以下几步: 1. **安装Qt for VS2010**:首先确保已经安装了Qt的Visual Studio插件,以便能够在项目中集成Qt的支持。 2. **设置项目**:新建一个Qt项目,并选择C++作为项目类型。确保在项目的构建系统中选择了VS2010。 3. **包含头文件**:在你的源代码中,添加必要的PJSIP头文件,如`pjmedia-endian.h`, `pjsua-lib.h`等。 4. **解析配置文件**:你可以使用PJSIP提供的API(如`pj_config_parse_file()`)来读取并解析`pjsip.conf`文件。这通常涉及到文件I/O操作和配置结构体的操作。 示例代码片段(伪代码): ```cpp #include <pjsua/pjmedia-endian.h> #include <pjsua/pjsua.h> // 加载配置文件 std::string config_path = "path_to_your_pjsip.conf"; pj_status_t status; pj_config_info config; if (pj_config_parse_file(&config, config_path.c_str(), &status) != PJ_SUCCESS) { // 处理错误 } // 使用解析后的配置信息 // ... (这里可以访问配置项,如endpoint、注册信息等) ``` 5. **保存配置**:如果你需要修改配置并将其保存回文件,可以使用`pj_config_write_to_file()`函数。 6. **注意事项**:由于VS2010已过时,推荐使用更现代的版本如VS2019或更高版本。同时,PJSIP库可能会有更新,所以确保你使用的库是最新的版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值