QSettings 中文问题

来源:互联网 发布:鹏博士云计算业务中心 编辑:程序博客网 时间:2024/05/29 11:32

1.区号 [  ]中不能手动添加中文,不然读不出来值;

2.如果key或者value中有中文要加上这句话:

config->setIniCodec(QTextCodec::codecForName("UTF-8")); 

不然会乱码


附写的读写INI的类:

cpp

=============================================

#include "rwinifile.h"
//#include <QSettings>
RWIniFile::RWIniFile()
{


}


bool RWIniFile::writeIni(QString path, QString section,QString keyword, QString keyvalue)
{
if(path == QString(""))
{
return false;
}
else
{
//创建配置文件操作对象
QSettings *config = new QSettings(path, QSettings::IniFormat);


//将信息写入配置文件
config->beginGroup(section);
config->setValue(keyword, keyvalue);
config->endGroup();


if(config)
{
delete config;
}


return true;
}
}


bool RWIniFile::writeIni(QString path, QString section,QString keyword, QString keyvalue, bool clear_flag)
{
if(path == QString(""))
{
return false;
}
else
{
//创建配置文件操作对象
QSettings *config = new QSettings(path, QSettings::IniFormat);
if( clear_flag == true )
config->clear();


//将信息写入配置文件
config->beginGroup(section);
config->setValue(keyword, keyvalue);
config->endGroup();


if(config)
{
delete config;
}


return true;
}
}


QString RWIniFile::readIni(QString path, QString section,QString keyword, QString &keyvalue)
{
if(path == QString(""))
{
return "";
}
else
{
//创建配置文件操作对象
QSettings *config = new QSettings(path, QSettings::IniFormat);
config->setIniCodec(QTextCodec::codecForName("UTF-8")); 


keyvalue = config->value(section + "/" + keyword).toString();


if(config)
{
delete config;
}


return keyvalue;
}
}


============头文件===============

#ifndef RWINIFILE_H
#define RWINIFILE_H


#include <QtGui>






class RWIniFile
{
public:
RWIniFile();
bool static writeIni(QString path, QString section,QString keyword, QString keyvalue,bool clear_flag);
bool static writeIni(QString path, QString section,QString keyword, QString keyvalue);
QString static readIni(QString path, QString section,QString keyword, QString &keyvalue);
};
#endif // RWINIFILE_H



====调用处=====


IdName.Name =RWIniFile::readIni(IniPath, QString::fromLocal8Bit("FIXCFG_STR"),QString::fromLocal8Bit("0x%1").arg(QString::number(Ptr->bsAddr+i,16)), keyvalue);


//数据转换成16进制


========自己写的INI文件============

[FIXCFG_STR]       ;固有参数
0x8001 = 终端类型
0x8002 = 终端操作系统
0x8003 = 终端制造商
0x8004 = 终端硬件版本
0x8005 = 终端软件版本
0x8006 = 终端软件版本校验码
0x8007 = 终端通信规约类型
0x8008 = 终端出厂型号
0x8009 = 终端ID号
0x800A = 终端网卡MAC地址


[RUNCFG_STR] ;运行参数
0x8020 = 电流死区
0x8021 = 交流电压死区
0x8022 = 直流电压死区
0x8023 = 功率死区
0x8024 = 频率死区
0x8025 = 功率因数死区
0x8026 = PT一次额定
0x8027 = PT二次额定
0x8028 = 低电压报警门限值
0x8029 = 低电压报警周期
0x802A = 过电压报警门限值
0x802B = 过电压报警周期
0x802C = 重载报警门限值
0x802D = 重载报警周期
0x802E = 过载报警门限值
0x802F = 过载报警周期
0x8030 = 开入量采集防抖时间
0x8031 = 分闸输出脉冲保持时间
0x8032 = 合闸输出脉冲保持时间
0x8033 = 蓄电池自动活化周期
0x8034 = 蓄电池自动活化时刻
0x8035 = 预留
0x8036 = 预留
0x8037 = 预留
0x8038 = 预留
0x8039 = 预留
0x803A = 预留
0x803B = 预留
0x803C = 预留
0x803D = 预留
0x803E = 预留
0x803F = 预留
0x8040 = L01相CT一次额定
0x8041 = L01相CT二次额定
0x8042 = L01零序CT一次额定
0x8043 = L01零序CT二次额定
0x8044 = L01预留
0x8045 = L01预留
0x8046 = L01预留
0x8047 = L01预留
0x8048 = L01预留
0x8049 = L01预留
0x804A = L01预留
0x804B = L01预留
0x804C = L01预留
0x804D = L01预留
0x804E = L01预留
0x804F = L01预留


[PROCFG_STR] ;动作参数
0x8220 = 故障指示灯自动复归投入
0x8221 = 故障指示灯自动复归时间
0x8222 = 故障遥信保持时间
0x8223 = 首端FTU投入
0x8224 = X时间定值
0x8225 = Y时间定值
0x8226 = C时间定值
0x8227 = S时间定值
0x8228 = 单相接地跳闸时间
0x8229 = 选线跳闸重合时间定值
0x822A = 自适应相间短路故障处理投入
0x822B = 自适应单相接地故障处理投入
0x822C = 一次重合闸投退
0x822D = 一次重合时间
0x822E = 大电流闭锁重投退
0x822F = 大电流闭重定值
0x8230 = 备用
0x8231 = 备用
0x8232 = 备用
0x8233 = 备用
0x8234 = 备用
0x8235 = 备用
0x8236 = 备用
0x8237 = 备用
0x8238 = 备用
0x8239 = 备用
0x823A = 备用
0x823B = 备用
0x823C = 备用
0x823D = 备用
0x823E = 备用
0x823F = 备用
0x8240 = L01过流停电跳闸投退
0x8241 = L01过流I段告警投退
0x8242 = L01过流I段出口投退
0x8243 = L01过流I段定值
0x8244 = L01过流I段时间
0x8245 = L01过流II段告警投退
0x8246 = L01过流II段出口投退
0x8247 = L01过流II段定值
0x8248 = L01过流II段时间
0x8249 = L01零序过流告警投退
0x824A = L01零序过流出口投退
0x824B = L01零序过流定值
0x824C = L01零序过流时间
0x824D = L01小电流接地告警投退
0x824E = L01小电流接地出口投退
0x824F = L01备用
0x8250 = L01备用
0x8251 = L01备用
0x8252 = L01备用
0x8253 = L01备用
0x8254 = L01备用
0x8255 = L01备用
0x8256 = L01备用
0x8257 = L01备用
0x8258 = L01备用
0x8259 = L01备用
0x825A = L01备用
0x825B = L01备用
0x825C = L01备用
0x825D = L01备用
0x825E = L01备用
0x825F = L01备用



原创粉丝点击