您的位置:首页 > 新闻 > 资讯 > QT 的 QSettings 读写 INI 文件的示例

QT 的 QSettings 读写 INI 文件的示例

2025/1/14 2:34:56 来源:https://blog.csdn.net/quicmous/article/details/141093888  浏览:    关键词:QT 的 QSettings 读写 INI 文件的示例

在Qt中,QSettings 类提供了一种便捷的方式来存储和访问应用程序的设置,这些设置可以存储在多种格式的文件中,包括INI、Windows注册表(仅Windows平台)、XML和JSON等。以下是一些使用 QSettings 读写INI文件的示例。

写入INI文件

假设我们想要将一些设置保存到名为 settings.ini 的INI文件中,可以这样做:

#include <QCoreApplication>
#include <QSettings>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 创建一个QSettings对象,指定INI文件的名称和格式QSettings settings("settings.ini", QSettings::IniFormat);// 写入一些设置settings.setValue("User/Name", "John Doe");settings.setValue("User/Age", 30);settings.setValue("User/Email", "john.doe@example.com");// 输出调试信息,确认设置已保存(注意:这不会显示INI文件的内容)qDebug() << "Settings saved.";return a.exec();
}

在这个例子中,我们创建了一个 QSettings 对象,并指定了INI文件的名称(settings.ini)和格式(QSettings::IniFormat)。然后,我们使用 setValue() 方法写入了三个配置项。这些配置项将被保存到 settings.ini 文件中,如下所示(大致结构,具体格式可能略有不同):

[User]
Name=John Doe
Age=30
Email=john.doe@example.com

读取INI文件

接下来,假设我们想要从刚才保存的INI文件中读取这些设置,可以这样做:

#include <QCoreApplication>
#include <QSettings>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 创建一个QSettings对象,指定INI文件的名称和格式QSettings settings("settings.ini", QSettings::IniFormat);// 读取设置QString name = settings.value("User/Name", "Unknown").toString();int age = settings.value("User/Age", 0).toInt();QString email = settings.value("User/Email", "Unknown").toString();// 输出读取到的设置qDebug() << "Name:" << name;qDebug() << "Age:" << age;qDebug() << "Email:" << email;return a.exec();
}

在这个例子中,我们再次创建了一个 QSettings 对象,并指定了INI文件的名称和格式。然后,我们使用 value() 方法读取了之前保存的配置项。value() 方法的第二个参数是默认值,如果在INI文件中找不到指定的键,则会返回这个默认值。最后,我们使用 qDebug() 输出了读取到的设置。

请注意,虽然上面的代码示例使用了 QCoreApplication 作为应用程序的入口点,但 QSettings 类的使用并不限于GUI应用程序。它同样适用于控制台应用程序和其他类型的Qt应用程序。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com