• Qt 配置文件QSettings读取以及中文问题


    QSettings settings("xxxx.ini",QSettings::IniFormat);
    settings.setIniCodec(QTextCodec::codecForName("GB2312")); //在此添加设置,即可读写ini文件中的中文setup.ini文件内容:

    [Rooms]
    1RoomName=Room1 1PC1PCName=PC1 1PC1IP=192.168.1.121 1PC1App=C:\chess.exe 1PC1MACAddress=A0-2C-36-9E-94-FB 1PC2PCName=PC2 1PC2IP=192.168.1.152 1PC2App=D:\chess.exe 1PC2MACAddress=38-D5-47-00-1E-81 1PC3PCName=PC3 1PC3IP=192.168.1.153 1PC3App=D:\chess.exe 1PC3MACAddress=00-00-00-00-00-00 1PCsize=3 2RoomName=Room2 2PC1PCName=PC1 2PC1IP=192.168.1.121 2PC1App=C:\chess.exe 2PC1MACAddress=00-00-00-00-00-00 2PC2PCName=PC2 2PC2IP=192.168.1.152 2PC2App=D:\chess.exe 2PC2MACAddress=38-D5-47-00-1E-81 2PC3PCName=PC3 2PC3IP=192.168.1.153 2PC3App=D:\chess.exe 2PC3MACAddress=00-00-00-00-00-00 2PC4PCName=PC4 2PC4IP=192.168.1.154 2PC4App=D:\chess.exe 2PC3MACAddress=00-00-00-00-00-00 2PCsize=4 3RoomName=Room5 3PC1PCName=PC1 3PC1IP=192.168.1.121 3PC1App=C:\chess.exe|D:\A.exe|D:\B.exe|D:\C.exe 3PC1MACAddress=00-00-00-00-00-00 3PC2PCName=PC2 3PC2IP=192.168.1.152 3PC2App=D:\chess.exe|D:\A.exe|D:\B.exe|D:\C.exe 3PC2MACAddress=38-D5-47-00-1E-81 3PC3PCName=PC3 3PC3IP=192.168.1.153 3PC3App=D:\chess.exe|D:\A.exe|D:\B.exe|D:\C.exe 3PC3MACAddress=00-00-00-00-00-00 3PC4PCName=PC4 3PC4IP=192.168.1.154 3PC4App=D:\chess.exe|D:\A.exe|D:\B.exe|D:\C.exe 3PC4MACAddress=00-00-00-00-00-00 3PCsize=4 size=3 // 读取配置文件代码 QSettings* configIniRead = new QSettings( QCoreApplication::applicationDirPath()+"/setup.ini", QSettings::IniFormat); int roomCnt = configIniRead->beginReadArray("rooms"); for (int i = 0; i < roomCnt; ++i) { configIniRead->setArrayIndex(i); QString roomName = configIniRead->value("RoomName").toString(); int pcCnt = configIniRead->beginReadArray("PC"); for (int j = 0; j < pcCnt; ++j) { configIniRead->setArrayIndex(j); QString name = configIniRead->value("PCName").toString(); QString ip = configIniRead->value("IP").toString(); QString app = configIniRead->value("App").toString(); QString mac = configIniRead->value("MacAddress").toString(); //qDebug()<<app; QStringList list; list<<name<<ip<<app<<mac; rooms[roomName].push_back(list); } configIniRead->endArray(); } configIniRead->endArray();
    setup.ini内容:
    [General]
    isServer=true
    
    读取代码:
    QString appDirPath = QCoreApplication::applicationDirPath();
        QSettings* configIniRead = new QSettings(appDirPath+"/setup.ini", QSettings::IniFormat);
        bool isServer = false;
        if( configIniRead->allKeys().size() > 0 )
        {
            isServer = configIniRead->value("isServer").toBool();
            //httpServerPort = configIniRead->value("httpServerPort").toInt();
            qDebug() <<isServer<< "use setup.ini setting." ;
        }
        else
        {
            qDebug() << "have no setup.ini , use default setting ." ;
        }
    QString appDirPath = QCoreApplication::applicationDirPath();
    QSettings* configIniRead = new QSettings(appDirPath+"/setup.ini", QSettings::IniFormat);
    
    // test
        /*
        configIniRead->beginGroup("mainwindow");
        configIniRead->setValue("size", 122);
        configIniRead->setValue("fullScreen", 1);
        configIniRead->endGroup();
        configIniRead->beginGroup("outputpanel");
        configIniRead->setValue("visible", 1);
        configIniRead->endGroup();
        settings.setValue("fridge/color", QColor(Qt::white));
        settings.setValue("fridge/size", QSize(32, 96));
        settings.setValue("sofa", true);
        settings.setValue("tv", false);
        QStringList keys = settings.allKeys();
        // keys: ["fridge/color", "fridge/size", "sofa", "tv"]
        QStringList keys = settings.childKeys();
        // keys: ["sofa", "tv"]
        QStringList groups = settings.childGroups();
        // groups: ["fridge"]
        configIniRead->beginWriteArray("logins");
        for (int i = 0; i < 3; ++i) {
            configIniRead->setArrayIndex(i);
            configIniRead->setValue("userName", i);
            configIniRead->setValue("password", "0a");
        }
        configIniRead->endArray();
        */
  • 相关阅读:
    跨界 +赋能——互联网的下一个关键词
    Jmeter学习笔记(二十一)——Concurrency Thread Group阶梯式加压测试
    Jmeter学习笔记(二十)——后置处理器XPath Extractor使用
    Jmeter学习笔记(十九)——后置处理器之正则表达式的使用
    JMeter学习笔记(十八)——返回的响应数据出现中文乱码_解决方案
    Jmeter学习笔记(十七)——jmeter目录结构
    Jmeter学习笔记(十六)——HTTP请求之content-type
    Jmeter学习笔记(十五)——常用的4种参数化方式
    Jmeter学习笔记(十四)——逻辑控制器
    Jmeter学习笔记(十三)——xpath断言
  • 原文地址:https://www.cnblogs.com/coolbear/p/5603165.html
Copyright © 2020-2023  润新知