QT Qsettings
2021-09-11 本文已影响0人
c之气三段
写文件
//创建配置文件
QSettings setting("D:/qtProject/setting.ini", QSettings::IniFormat);
setting.setIniCodec("utf-8");
//写入数据
setting.beginGroup("stuNum");
setting.setValue("name",111);
setting.setValue("number",000);
setting.setValue("age",11);
setting.setValue("addr",33);
setting.setValue("phoneNum",44);
setting.endGroup();
setting.beginGroup("222");
setting.setValue("name",111);
setting.setValue("qqq",000);
setting.setValue("phoneNum",44);
setting.endGroup();
image.png
获取数据,同时可以设置值
//创建配置文件
QSettings setting("D:/qtProject/setting.ini", QSettings::IniFormat);
setting.setIniCodec("utf-8");
foreach (auto group, setting.childGroups())
{
qDebug()<<group;
setting.beginGroup(group);
foreach (auto para, setting.childKeys()) {
qDebug()<<para<<setting.value(para);
//if(para=="qqq")
//{
//setting.setValue(para,333);
//}
}
setting.endGroup();
}
image.png
列出设备的环境变量
setWindowFlags(Qt::WindowCloseButtonHint | Qt::MSWindowsFixedSizeDialogHint);
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->tableWidget->verticalHeader()->hide();
ui->tableWidget->verticalHeader()->setVisible(false);
ui->tableWidget->setColumnCount(2);
QSettings setting("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment", QSettings::NativeFormat);
int i = 0;
ui->tableWidget->setRowCount(setting.childKeys().size());
foreach (auto key, setting.childKeys())
{
QString velue = setting.value(key).toString();
ui->tableWidget->setItem(i,0,new QTableWidgetItem(key));
ui->tableWidget->item(i,0)->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
ui->tableWidget->setItem(i,1,new QTableWidgetItem(velue));
ui->tableWidget->item(i,0)->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
i++;
}
QStringList heads;heads<<"key"<<"value";
ui->tableWidget->setHorizontalHeaderLabels(heads);
以管理员运行行可修改环境变量
QSettings setting("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment", QSettings::NativeFormat);
if(m_oldKey.isEmpty())
{
if(setting.childKeys().contains(key))return;
setting.setValue(key,value.mid(0,value.size()-2));
}
else
{
setting.remove(m_oldKey);
setting.setValue(key,value.mid(0,value.size()-2));
}
默认以管理员允许exe
pro
QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\"
配置ini项目配置文件
//全局类中
static QMap<QString,QMap<QString,QString>> m_configMap;
//加载
QSettings setting("./config/config.ini", QSettings::IniFormat);
setting.setIniCodec("utf-8");
foreach (QString group, setting.childGroups())
{
QMap<QString,QString> paraMap;
setting.beginGroup(group);
foreach (QString para, setting.childKeys()) {
paraMap.insert(para,setting.value(para).toString());
}
Globol::m_configMap.insert(group,paraMap);
setting.endGroup();
}
//使用,类似哪个组或节点下哪一个键值对
Globol::m_globalDir = Globol::m_configMap.value("Manage").value("projectDir");
//设置
QSettings setting("./config/config.ini", QSettings::IniFormat);
setting.setIniCodec("utf-8");
setting.beginGroup("Manage");
setting.setValue("projectDir",value);
setting.endGroup();