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; }