QT ini文件

QT ini文件

INI 文件(Initialization File)是一种简单的配置文件格式,常用于存储应用程序的配置信息。

INI 文件通常由多个节(section)组成,每个节包含多个键值对(key-value pairs)。

INI 文件的语法基本格式如下:

[Section1]
key1=value1
key2=value2

[Section2]
keyA=valueA
keyB=valueB
        
[Section1] 和 [Section2] 是节(section)的名称,用方括号括起来。
key1=value1 和 key2=value2 是 Section1 中的键值对。
keyA=valueA 和 keyB=valueB 是 Section2 中的键值对。

QSettings 类

class QSettings {
public:
    // 构造函数
    QSettings(const QString &organization, const QString &application = QString(), QObject *parent = nullptr);
    QSettings(Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr);
    QSettings(Format format, Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr);
    QSettings(const QString &fileName, Format format, QObject *parent = nullptr);
    QSettings(QObject *parent = nullptr);

    // 析构函数
    ~QSettings();

    // 公共成员函数
    void setValue(const QString &key, const QVariant &value); // 设置键值对
    QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const; // 获取键值对
    bool contains(const QString &key) const; // 检查键是否存在
    void remove(const QString &key); // 移除键值对
    void clear(); // 清空所有配置
    void sync(); // 同步配置到存储介质
    QStringList allKeys() const; // 获取所有键的列表
    QStringList childKeys() const; // 获取当前组的子键列表
    QStringList childGroups() const; // 获取当前组的子组列表
    void beginGroup(const QString &prefix); // 开始一个组
    void endGroup(); // 结束当前组
    int beginReadArray(const QString &prefix); // 开始读取数组
    void beginWriteArray(const QString &prefix, int size = -1); // 开始写入数组
    void setArrayIndex(int i); // 设置数组索引
    void endArray(); // 结束数组
    QString group() const; // 获取当前组
    QString fileName() const; // 获取配置文件名
    Format format() const; // 获取配置文件格式
    Scope scope() const; // 获取作用域
    QString organizationName() const; // 获取组织名称
    QString applicationName() const; // 获取应用程序名称
    bool isWritable() const; // 检查配置是否可写

    // 枚举类型
    enum Format {
        NativeFormat, // 使用平台原生格式(注册表、plist 等)
        IniFormat, // 使用 INI 格式
        InvalidFormat = -1 // 无效格式
    };

    enum Scope {
        UserScope, // 用户作用域
        SystemScope // 系统作用域
    };

    enum Status {
        NoError, // 无错误
        AccessError, // 访问错误
        FormatError // 格式错误
    };

    // 静态成员函数
    static void setDefaultFormat(Format format); // 设置默认格式
    static Format defaultFormat(); // 获取默认格式
    static void setPath(Format format, Scope scope, const QString &path); // 设置路径
    static QString displayName(Scope scope); // 获取作用域显示名称
};

示例

#ifndef WRINIFILE_H
#define WRINIFILE_H
#include <QSettings>



//写ini文件
void WriteIniFile();
//读ini文件
void ReadIniFile();

void ReadIniFileIsKey();
#endif // WRINIFILE_H

#include "wrinifile.h"

//写ini文件
void WriteIniFile(){
        QSettings *Configfile = new QSettings("myconfig.ini", QSettings::IniFormat);


        Configfile->beginGroup("Person");
        Configfile->setValue("name", "Tom");
        Configfile->setValue("age", 25);
        Configfile->endGroup();

        Configfile->beginGroup("Address");
        Configfile->setValue("street", "123");
        Configfile->setValue("city", "Anytown");
        Configfile->setValue("state", "CA");
        Configfile->setValue("zip", "12345");
        Configfile->endGroup();
        delete Configfile;


}
//读ini文件
void ReadIniFile(){
        QSettings *Configfile = new QSettings("myconfig.ini", QSettings::IniFormat);

        //读取第一节
        Configfile->beginGroup("Person");
        QString name = Configfile->value("name").toString();
        int age = Configfile->value("age").toInt();
        Configfile->endGroup();

        qDebug() << "Name: " << name << " Age: " << age;

}

void ReadIniFileIsKey(){
        QSettings *Configfile = new QSettings("myconfig.ini", QSettings::IniFormat);

        for (QString key : Configfile->allKeys()){

            qDebug() << key.toUtf8().data() << " : " << Configfile->value(key).toString().toUtf8().data();

        }
}

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Qt中,可以使用QSettings类来读取和写入INI文件。要实现INI文件的加密,可以采用以下步骤: 1. 导入所需的头文件: ```cpp #include <QSettings> #include <QCryptographicHash> ``` 2. 定义一个函数来加密和解密INI文件: ```cpp void encryptINI(const QString& filename) { // 读取INI文件内容 QFile file(filename); if(!file.open(QIODevice::ReadWrite | QIODevice::Text)) return; QTextStream in(&file); QString content = in.readAll(); file.close(); // 加密INI文件内容 QByteArray encryptedData = QCryptographicHash::hash(content.toUtf8(), QCryptographicHash::Sha256).toHex(); // 写入加密后的INI文件内容 if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) return; QTextStream out(&file); out << encryptedData; file.close(); } void decryptINI(const QString& filename) { // 读取加密后的INI文件内容 QFile file(filename); if(!file.open(QIODevice::ReadWrite | QIODevice::Text)) return; QTextStream in(&file); QString encryptedContent = in.readAll(); file.close(); // 解密INI文件内容 QByteArray decryptedData = QCryptographicHash::hash(encryptedContent.toUtf8(), QCryptographicHash::Sha256).toHex(); // 写入解密后的INI文件内容 if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) return; QTextStream out(&file); out << decryptedData; file.close(); } ``` 3. 使用加密和解密函数操作INI文件: ```cpp // 加密INI文件 encryptINI("example.ini"); // 解密INI文件 decryptINI("example.ini"); ``` 通过以上步骤,可以实现对INI文件的加密和解密操作。加密后的INI文件内容将会被转换为SHA-256哈希值,并写入文件中。解密操作则是将加密后的内容重新转换为原始的INI文件内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可能只会写BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值