Qt:ini文件注释语法

ini文件注释语法,#后面为注释内容

在这里插入图片描述

m_setting = new QSettings(CONFIG_FILE, QSettings::IniFormat);
m_setting->setValue("General/typeOfFile", 1);
//这样设置值得到的分组名General前面会有一个%,区分与系统默认的分组名General
下面是一个简单的示例代码,可以扩展QSettings类以支持添加注释: ```cpp #include <QSettings> #include <QTextStream> class CommentedSettings : public QSettings { public: CommentedSettings(const QString& fileName, Format format, QObject* parent = nullptr) : QSettings(fileName, format, parent) { } void setValue(const QString& key, const QVariant& value, const QString& comment = "") { QSettings::setValue(key, value); if (!comment.isEmpty()) { QTextStream stream(&m_buffer); stream << "\n# " << comment << "\n"; m_comments.insert(key, m_buffer.size()); m_buffer.append(value.toByteArray()); } } QString comment(const QString& key) const { if (m_comments.contains(key)) { const auto pos = m_comments[key]; QTextStream stream(m_buffer.mid(pos)); return stream.readLine(); } return QString(); } void sync() { QSettings::sync(); if (!m_buffer.isEmpty()) { QFile file(fileName()); if (file.open(QIODevice::ReadWrite | QIODevice::Text)) { QTextStream stream(&file); for (const auto& key : m_comments.keys()) { const auto pos = m_comments[key]; const auto value = QSettings::value(key); stream.seek(pos); stream << comment(key) << "\n"; stream << value.toString() << "\n"; } m_buffer.clear(); m_comments.clear(); } } } private: QByteArray m_buffer; QMap<QString, int> m_comments; // key -> position of comment in buffer }; ``` 在这个示例中,我们创建了一个名为CommentedSettings的子类,以便我们可以扩展setValue()方法,以便它可以接受一个额外的comment参数。该方法将注释添加到内部缓冲区中,并将其与设置值一起写入实际的设置文件。我们还添加了一个comment()方法,以便我们可以检索给定键的注释。最后,我们覆盖了sync()方法,以确保我们的注释也写入实际的设置文件。 要使用这个类,只需像使用QSettings一样创建一个实例即可: ```cpp CommentedSettings settings("mysettings.ini", QSettings::IniFormat); settings.setValue("myKey", "myValue", "This is a comment for myKey"); settings.sync(); ``` 请注意,我们可以通过将注释作为第三个参数传递给setValue()方法来添加注释,如上所示。我们还可以使用comment()方法检索注释。最后,我们需要在我们的应用程序退出之前调用sync()方法,以确保注释写入实际的设置文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值