QSetting

1、初始化,判断是否存在ini文件,如果不存在则新建
void iniConfig()
{
    QFileInfo fileInfo(".\config.ini");
    if (!fileInfo.isFile())
    {
        QSettings iniFile(".\config.ini", QSettings::IniFormat);//参数1,代表新建ini文件的位置的绝对路径;  参数2,将设置存储在ini文件中
        iniFile.setIniCodec(QTextCodec::codecForName("GB2312"));    //解决读取value值的中文乱码问题
        for (int i = 0; i < 8; i++)//8个组
        {
            QString tempStr = QString("car_%1").arg(i+1);
            iniFile.beginGroup(tempStr);
            iniFile.setValue("net_port", 1000);    //端口
            iniFile.setValue("net_server_ip", "192.168.40.11");    //服务器ip
            iniFile.setValue("net_local_ip", "192.168.40.10");    //本地ip
            iniFile.setValue("net_gwaddr", "192.168.40.1");    //网关
            iniFile.setValue("net_maskaddr", "255.255.255.0");    //子网掩码
            iniFile.endGroup();
        }
    }
}
2、读取值
void getConfig(int carNUm)
{
    QSettings iniFile(".\config.ini", QSettings::IniFormat);//参数1,代表新建ini文件的位置的绝对路径;  参数2,将设置存储在ini文件中
    iniFile.setIniCodec(QTextCodec::codecForName("GB2312"));
    QString tempStr = QString("car_%1").arg(carNUm);
    iniFile.beginGroup(tempStr);
    ui.lineEdit_31->setText(iniFile.value("net_port").toString());//端口
    ui.lineEdit_83->setText(iniFile.value("net_server_ip").toString());
    ui.lineEdit_32->setText(iniFile.value("net_local_ip").toString());
    ui.lineEdit_33->setText(iniFile.value("net_gwaddr").toString());
    ui.lineEdit_34->setText(iniFile.value("net_maskaddr").toString());
    iniFile.endGroup();
}
3、设置值
QSettings iniFile(".\config.ini", QSettings::IniFormat);//参数1,代表新建ini文件的位置的绝对路径;  参数2,将设置存储在ini文件中
    iniFile.setIniCodec(QTextCodec::codecForName("GB2312"));    //解决读取value值的中文乱码问题
    QString tempStr = QString("car_%1").arg(ui.comboBox_3->currentIndex() + 1);
    iniFile.beginGroup(tempStr);
    iniFile.setValue("net_port", ui.lineEdit_31->text());    //端口
    iniFile.setValue("net_server_ip", ui.lineEdit_83->text());    //服务器ip
    iniFile.setValue("net_local_ip", ui.lineEdit_32->text());    //本地ip
    iniFile.setValue("net_gwaddr", ui.lineEdit_33->text());    //网关
    iniFile.setValue("net_maskaddr", ui.lineEdit_34->text());    //子网掩码
    iniFile.endGroup();

 代码:单例类

class PacketConfig
{
private:
    static PacketConfig *instance;
    PacketConfig()=default;
    ~PacketConfig()
    {
        delete instance;
        delete sets;
    }
public:
    static PacketConfig* getInstace();static QSettings* sets;
};

PacketConfig* PacketConfig::instance = nullptr;
QSettings* PacketConfig::sets = nullptr;
PacketConfig* PacketConfig::getInstace()
{
    if(instance == nullptr)
    {
        instance = new PacketConfig;
        sets = new QSettings(QCoreApplication::applicationDirPath()+"./cfg.ini",QSettings::IniFormat);
    }
    return instance;
}
原文地址:https://www.cnblogs.com/judes/p/9837536.html