Qt中INI 配置文件的读写操作

发布时间:2026/5/20 5:25:05

Qt中INI 配置文件的读写操作 int文件对于大多数人来说应该不陌生一般大型的软件中有些配置文件使用的是ini格式文件。Qt也提供了ini文件的创建元素的增加和删除获取等功能。ini中的数据一般包含组组中包含的key和value值。在Qt中使用的是类QSettings这个类就实现了ini格式文件操作的相关函数。在qt的官方文档中有说明QSettings类有两种使用方式一中是将其属性通过QSettings配置到系统的注册表中另一种就是保存为本地的ini文件。使用QSettings类将配置保存到注册表中使用步骤如下1、使用QCoreApplication::setOrganizationName(“公司名称”);和QCoreApplication::setApplicationName(“应用名称”);2、直接使用QSettings无参构造对象。3、使用QSettings的setValue()函数设置属性值。4、使用QSettings的value获取属性值。例如如果你的产品名为Star Runner而你的公司名为MySoft。这是qt中的例子QCoreApplication::setOrganizationName(MySoft); QCoreApplication::setApplicationName(Star Runner); ... QSettings settings;以上是第一步这一步执行之后小编估计就会在注册表中创建出对应的注册表结构 MySoft–Star Runner。之后在项目的任何位置就可以使用QSettings对象创建和获取软件的属性值了。settings.setValue(editor/wrapMargin, 68);//设置属性值int margin settings.value(editor/wrapMargin).toInt();//获取属性值如果QSettings中有分组的话可以使用一下方式。例如有一个sensor的组sensorType为属性camera为属性值。设置属性值为//m_settings是QSettings的对象 m_settings-beginGroup(sensor); //打开组如果没有就创建一个 m_settings-setValue(sensorType,camera);//设置属性和值 m_settings-endGroup();//结束值设置获取属性值m_settings-beginGroup(sensor);//打开组 value m_settings-value(sensorType).toString();//获取属性值 m_settings-endGroup();至此注册表的属性设置就完成了这里需要注意的就是各个系统中注册表的区别。还有就是通过以上方式设置的属性值夜可以直接通过注册表进行访问以上方法主要适用于设置全局通用的属性使用以上方法相对方便。直接访问ini文件直接使用ini本地文件和写到注册标准操作流程差不多相似只是在创建QSettings对象的时候不一样。1、使用QSettings类创建对象在创建对象的过程中需要引入两个参数文件存储路径和文件格式。2、使用QSettings的setValue()函数设置属性值。3、使用QSettings的value获取属性值。这种使用方式可以方便配置文件的修改但是在软件使用过程中无法做到全局通用不过可以使用C的单例模式实现全局唯一的使用方式。例如创建一个配置文件为myapp.ini的文件路径为/home/petra/misc/myapp.ini的配置文件。QSettings settings(/Users/petra/misc/myapp.plist, QSettings::NativeFormat);//创建QSettings对象之后在项目的任何位置就可以使用QSettings对象创建和获取软件的属性值了。settings.setValue(editor/wrapMargin, 68);//设置属性值int margin settings.value(editor/wrapMargin).toInt();//获取属性值如果QSettings中有分组的话可以使用一下方式。例如有一个sensor的组sensorType为属性camera为属性值。设置属性值为//m_settings是QSettings的对象 m_settings-beginGroup(sensor); //打开组如果没有就创建一个 m_settings-setValue(sensorType,camera);//设置属性和值 m_settings-endGroup();//结束值设置获取属性值m_settings-beginGroup(sensor);//打开组 value m_settings-value(sensorType).toString();//获取属性值 m_settings-endGroup();至此就配置文件就设置完成了。以下是小编封装的一个单例模式的类#ifndefCONFIGUREFILE_H#defineCONFIGUREFILE_H#includeQString#includeQSettingsclassconfigureFile{public:/** * brief writeConfig 向配置文件中添加数据 * param group 所要添加的分类 * param key 所要添加的键 * param value 所要添加的值 */voidwriteConfig(QString group,QString key,QString value);/** * brief readConfig 获取配置文件中对应键值的数据 * param group 分类 * param key 键 * return 值 */QStringreadConfig(QString group,QString key);/** * brief getInterface 获取配置文件对象 * return 返回配置文件对象 */staticconfigureFile*getInterface();private:configureFile();~configureFile();QSettings*m_settingsnullptr;staticconfigureFile*m_configFile;};#endif// CONFIGUREFILE_H#includeconfigurefile.hconfigureFile*configureFile::m_configFilenullptr;configureFile::configureFile(){if(m_settingsnullptr){m_settingsnewQSettings(./hwots.ini,QSettings::IniFormat);}}configureFile::~configureFile(){if(m_settings!nullptr){deletem_settings;}}voidconfigureFile::writeConfig(QString group,QString key,QString value){m_settings-beginGroup(group);m_settings-setValue(key,value);m_settings-endGroup();}QString configureFile::readConfig(QString group,QString key){QString value;m_settings-beginGroup(group);valuem_settings-value(key).toString();m_settings-endGroup();returnvalue;}configureFile*configureFile::getInterface(){if(m_configFilenullptr){m_configFilenewconfigureFile();}returnm_configFile;}

相关新闻