从linux socket中接收数据,进入解析函数 void Widget::parseData(char *buf , int len),然后写入配置文件

QString Widget::GetCorrectUnicode(const QByteArray &ba)
{
    QTextCodec::ConverterState state;
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QString text = codec->toUnicode(ba.constData(), ba.size(), &state);
    if (state.invalidChars > 0)
    {
        text = QTextCodec::codecForName("GBK")->toUnicode(ba);
    }
    else
    {
        text = ba;
    }
    return text;
}

void Widget::parseControlData(char *buf , int len)
{
    QString str = QString::fromUtf8(buf) ;
    QByteArray barry;
    for(int i = 0 ; i < len ; i++)
        barry[i]=buf[i] ;

    QString text = GetCorrectUnicode(barry);
    qDebug()<<"msg:"<<text;

    QByteArray textA = text.toUtf8() ;
    qDebug()<<textA ;
    QSettingTickText::getInstance()->Set("Tick","text",textA); 
}

写入配置文件

void QSettingTickText::Set(QString groupname,QString keyname,QString keyvalue)
{
    //m_psetting->setValue(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname), qvarvalue);

//    //2 开始第一个组
//    m_psetting->beginGroup(groupname);
//    //3 写数据到配置
//    m_psetting->setValue(keyname, keyvalue);

//    //4 结束第一个组
//    m_psetting->endGroup();

    //1 创建一个配置文件对象
        QSettings ini("zhongwen.ini", QSettings::IniFormat);
        ini.setIniCodec("UTF-8");
        //2 开始第一个组
        ini.beginGroup(groupname);
        //3 写数据到配置
        //QString temp = UTF82GBK(keyvalue) ;
        ini.setValue(keyname, keyvalue);
        //qDebug()<<"setting "<<keyname<<"="<<keyvalue;
        //4 结束第一个组
        ini.endGroup();
}

从配置文件读取

QString QSettingTickText::ReadQVariant(QString groupname, QString keyname)
{

    //1 创建一个配置文件对象
        QSettings ini("zhongwen.ini", QSettings::IniFormat);
        ini.setIniCodec("UTF-8");
        //2 开始第一个组
        ini.beginGroup(groupname);

        //3 从配置文件读取数据
        QByteArray ba  = ini.value(keyname).toByteArray();

        qDebug()<<ba ;

        char *ca ;
        int size = ba.size() ;
        ca = new char[size] ;
        for(int i =  0 ; i < size; i++)
            ca[i]= ba[i] ;


        QString key_value = QString::fromUtf8(ca) ;
        //QString key_value =ba ;

        //4 结束第一个组
        ini.endGroup();
        return   key_value;
}

个人觉得还有优化的地方,没有再研究,就将就这样了。