my-QT专栏

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();
上一篇 下一篇

猜你喜欢

热点阅读