色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Qt軟件開(kāi)發(fā)-QSettings管理用戶環(huán)境變量(修改、輸出)

DS小龍哥-嵌入式技術(shù) ? 來(lái)源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-07-14 13:46 ? 次閱讀

1. 前言

在軟件開(kāi)發(fā)中可能有需求修改用戶環(huán)境變量,添加新的值進(jìn)行。比如:添加某些可執(zhí)行文件、某些動(dòng)態(tài)庫(kù)的路徑到系統(tǒng)環(huán)境PATH中,能夠讓可執(zhí)行文件運(yùn)行過(guò)程中可以找到對(duì)應(yīng)的dll。

在Qt里可以使用QSettings來(lái)實(shí)現(xiàn),QSettings類提供一個(gè)獨(dú)立于平臺(tái)的應(yīng)用程序設(shè)置,Qt已經(jīng)封裝好,修改、讀取用戶的環(huán)境變量不需要管理員權(quán)限,并且修改也是直接針對(duì)系統(tǒng)的環(huán)境配置進(jìn)行修改,并非當(dāng)前進(jìn)程有效(所以修改要謹(jǐn)慎操作)。

image-20220905112808474

2. QSettings

QSettings可以修改注冊(cè)表,支持存儲(chǔ)自定義數(shù)據(jù)格式,通常可以保存應(yīng)用程序設(shè)置,保存和恢復(fù)應(yīng)用程序設(shè)置。

QSettings的詳細(xì)功能在Qt幫助頁(yè)面有詳細(xì)的介紹,當(dāng)前這里只是列出QSettings修改用戶環(huán)境變量的一個(gè)使用案例,其他功能不做詳細(xì)介紹。

下面是來(lái)至Qt幫助頁(yè)面的介紹:

QSettings類提供持久的獨(dú)立于平臺(tái)的應(yīng)用程序設(shè)置。
 用戶通常期望應(yīng)用程序在會(huì)話中記住其設(shè)置(窗口大小和位置、選項(xiàng)等)。這些信息通常存儲(chǔ)在Windows上的系統(tǒng)注冊(cè)表中,以及macOS和iOS上的屬性列表文件中。在Unix系統(tǒng)上,在沒(méi)有標(biāo)準(zhǔn)的情況下,許多應(yīng)用程序(包括KDE應(yīng)用程序)使用INI文本文件。
 QSettings是圍繞這些技術(shù)的抽象,使能夠以可移植的方式保存和恢復(fù)應(yīng)用程序設(shè)置。它還支持自定義存儲(chǔ)格式。
 QSettings的API基于QVariant,允許以最小的工作量保存大多數(shù)基于值的類型,如QString、QRect和QImage。
 如果只需要一個(gè)基于非持久內(nèi)存的結(jié)構(gòu),請(qǐng)考慮使用QMap< QString,QVariant >。
 基本用法
 創(chuàng)建QSettings對(duì)象時(shí),必須傳遞公司或組織的名稱以及應(yīng)用程序的名稱。例如,如果的產(chǎn)品名為Star Runner,而的公司名為MySoft,則可以按照如下方式構(gòu)造QSettings對(duì)象:
 Q設(shè)置("MySoft"、"Star Runner");
 QSettings對(duì)象可以在堆棧上或堆上創(chuàng)建(即使用new)。構(gòu)造和銷毀QSettings對(duì)象非???。
 如果在應(yīng)用程序中使用來(lái)自多個(gè)位置的QSettings,則可能需要使用QCoreApplication::setOrganizationName()和qCoreApp::setApplicationName()指定組織名稱和應(yīng)用程序名稱,然后使用默認(rèn)的QSetting構(gòu)造函數(shù):
 QCoreApplication::setOrganizationName("MySoft");
 QCoreApplication::setOrganizationDomain("mysoft.com");
 QCoreApplication::setApplicationName("明星跑步者");
 ...
 Q設(shè)置設(shè)置;
 (這里,我們還指定了組織的Internet域。當(dāng)設(shè)置Internet域時(shí),它將在macOS和iOS上使用,而不是組織名稱,因?yàn)閙acOS和iOS應(yīng)用程序通常使用Internet域來(lái)標(biāo)識(shí)自己。如果未設(shè)置域,則從組織名稱派生假域。有關(guān)詳細(xì)信息,請(qǐng)參閱下面的平臺(tái)特定說(shuō)明。)
 QSettings存儲(chǔ)設(shè)置。每個(gè)設(shè)置由指定設(shè)置名稱(鍵)的QString和存儲(chǔ)與鍵關(guān)聯(lián)的數(shù)據(jù)的QVariant組成。要編寫設(shè)置,請(qǐng)使用setValue()。例如:
 設(shè)置setValue("編輯器/包裝邊緣",68);
 如果已經(jīng)存在具有相同鍵的設(shè)置,則現(xiàn)有值將被新值覆蓋。為了提高效率,更改可能不會(huì)立即保存到永久存儲(chǔ)中。(可以隨時(shí)調(diào)用sync()來(lái)提交更改。)
 可以使用value()返回設(shè)置的值:
 int margin = settings.value("editor/wrapMargin").toInt();
 ?
 如果沒(méi)有指定名稱的設(shè)置,QSettings將返回空QVariant(可以轉(zhuǎn)換為整數(shù)0)??梢酝ㄟ^(guò)向value()傳遞第二個(gè)參數(shù)來(lái)指定另一個(gè)默認(rèn)值:
  int margin = settings.value("editor/wrapMargin", 80).toInt();
 ?
 要測(cè)試給定鍵是否存在,請(qǐng)調(diào)用contains()。要?jiǎng)h除與鍵關(guān)聯(lián)的設(shè)置,請(qǐng)調(diào)用remove()。要獲取所有鍵的列表,請(qǐng)調(diào)用allKeys()。要?jiǎng)h除所有鍵,請(qǐng)調(diào)用clear()。

3. 實(shí)現(xiàn)代碼Demo

#include "widget.h"
 #include "ui_widget.h"
 ?
 Widget::Widget(QWidget *parent)
     : QWidget(parent)
     , ui(new Ui::Widget)
 {
     ui- >setupUi(this);
 ?
     this- >setWindowTitle("用戶環(huán)境變量管理");
 }
 ?
 ?
 Widget::~Widget()
 {
     delete ui;
 }
 ?
 ?
 //打印系統(tǒng)環(huán)境變量
 void Widget::on_pushButton_print_env_val_clicked()
 {
     QString env_name=ui- >lineEdit_env_path_name- >text();
     if(env_name.isEmpty())return;
 ?
     //參數(shù)解釋
     //【1】. "HKEY_CURRENT_USEREnvironment": 用戶環(huán)境變量
     //【2】. QSettings::NativeFormat: 使用最適合平臺(tái)的存儲(chǔ)格式存儲(chǔ)設(shè)置。
     QSettings seting("HKEY_CURRENT_USEREnvironment", QSettings::NativeFormat);
 ?
     //打印用戶環(huán)境變量path的值。
     QString text_val = seting.value(env_name).toString();
     ui- >plainTextEdit- >setPlainText(text_val);
 }
 ?
 ?
 //設(shè)置環(huán)境變量的值
 void Widget::on_pushButton_set_env_val_clicked()
 {
     QString env_name=ui- >lineEdit_set_env_name- >text();
     if(env_name.isEmpty())return;
 ?
     QString env_val=ui- >lineEdit_env_add_val- >text();
     if(env_val.isEmpty())return;
 ?
     //參數(shù)解釋
     //【1】. "HKEY_CURRENT_USEREnvironment": 用戶環(huán)境變量
     //【2】. QSettings::NativeFormat: 使用最適合平臺(tái)的存儲(chǔ)格式存儲(chǔ)設(shè)置。
     QSettings seting("HKEY_CURRENT_USEREnvironment", QSettings::NativeFormat);
 ?
     //獲取原環(huán)境變量的值
     QString text_val = seting.value(env_name).toString();
 ?
     //遵循windows下環(huán)境變量里的路徑
     env_val = env_val.replace("/", "");
 ?
     //windows環(huán)境變量;作為間隔
     text_val.append(";");
 ?
     //添加用戶設(shè)置的值
     text_val.append(env_val);
 ?
     //添加新的值
     seting.setValue(env_name,text_val);
 ?
     QMessageBox::about(this,"提示",tr("新值設(shè)置成功!"));
 }
 ?
 ?
 //清空環(huán)境變量
 void Widget::on_pushButton_clean_env_clicked()
 {
     QString env_name=ui- >lineEdit_clean_env_name- >text();
     if(env_name.isEmpty())return;
 ?
     //參數(shù)解釋
     //【1】. "HKEY_CURRENT_USEREnvironment": 用戶環(huán)境變量
     //【2】. QSettings::NativeFormat: 使用最適合平臺(tái)的存儲(chǔ)格式存儲(chǔ)設(shè)置。
     QSettings seting("HKEY_CURRENT_USEREnvironment", QSettings::NativeFormat);
     //清空環(huán)境變量
     seting.setValue(env_name,"");
 ?
     QMessageBox::about(this,"提示",tr("清空成功!"));
 }

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 軟件開(kāi)發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    612

    瀏覽量

    27353
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3265

    瀏覽量

    57677
  • Qt
    Qt
    +關(guān)注

    關(guān)注

    1

    文章

    302

    瀏覽量

    37899
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    613

    瀏覽量

    28360
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux環(huán)境變量總結(jié)

    Linux是一個(gè)多用戶的操作系統(tǒng)。多用戶意味著每個(gè)用戶登錄系統(tǒng)后,都有自己專用的運(yùn)行環(huán)境。而這個(gè)環(huán)境是由一組
    發(fā)表于 11-14 12:01 ?385次閱讀

    LINUX的環(huán)境變量總結(jié)

    Linux 是一個(gè)多用戶的操作系統(tǒng)。多用戶意味著每個(gè)用戶登錄系統(tǒng)后,都有自己專用的運(yùn)行環(huán)境。而這個(gè)環(huán)境是由一組
    發(fā)表于 11-21 11:43 ?442次閱讀

    Linux環(huán)境變量配置的6種方法

    在自定義安裝軟件的時(shí)候,經(jīng)常需要配置環(huán)境變量,下面列舉出各種對(duì)環(huán)境變量的配置方法。
    發(fā)表于 12-05 09:25 ?1446次閱讀

    Linux環(huán)境變量的配置方法

    在自定義安裝軟件的時(shí)候,經(jīng)常需要配置環(huán)境變量,下面列舉出各種對(duì)環(huán)境變量的配置方法。
    發(fā)表于 09-27 09:50 ?358次閱讀

    python環(huán)境變量的配置pip

    Python環(huán)境變量的配置和使用是每個(gè)Python開(kāi)發(fā)者都需要了解和掌握的基本技能之一。在本文中,我們將詳細(xì)介紹如何正確配置Python環(huán)境變量,并展示一些常見(jiàn)問(wèn)題的解決方法。我們將從環(huán)境變量
    的頭像 發(fā)表于 12-15 15:41 ?2421次閱讀

    xilinx移植Qt,啟動(dòng)腳本中設(shè)置環(huán)境變量失敗,請(qǐng)問(wèn)如何解決?

    最近在xilinx的板子上移植Qt,用到了官方的ramdisk,所以在文件系統(tǒng)中做出相應(yīng)的修改不能保存,因此在保存在TF卡下的開(kāi)機(jī)啟動(dòng)腳本init.sh中進(jìn)行配置Qt環(huán)境變量,開(kāi)機(jī)后
    發(fā)表于 07-03 09:43

    Allegro環(huán)境變量

    Allegro環(huán)境變量:Allegro 是一套功能強(qiáng)大,但相對(duì)的也是一套相當(dāng)復(fù)雜的系統(tǒng),它提供許多的專屬環(huán)境變量供使用者設(shè)定,讓使用者可以自訂一個(gè)專屬于自己的Allegro 操作環(huán)境,讓整個(gè)
    發(fā)表于 08-21 22:43 ?0次下載

    Java環(huán)境變量配置

    Java環(huán)境變量配置
    發(fā)表于 07-24 11:39 ?0次下載

    python設(shè)置環(huán)境變量

    我們想要運(yùn)行python,需要安裝Python,還要設(shè)置一些環(huán)境變量1,此電腦,右鍵屬性2、高級(jí)系統(tǒng)設(shè)置-> 環(huán)境變量3、在系統(tǒng)變量中找到path,雙擊它,在分號(hào)后面添加python的軟件
    發(fā)表于 11-10 14:49 ?890次閱讀

    嵌入式Linux環(huán)境變量分區(qū)制作

    嵌入式Linux環(huán)境變量分區(qū)制作嵌入式環(huán)境變量分區(qū)準(zhǔn)備一個(gè)存放環(huán)境變量的文本文件制作環(huán)境變量的工具制作環(huán)境變量分區(qū)鏡像制作嵌入式
    發(fā)表于 11-02 10:35 ?8次下載
    嵌入式Linux<b class='flag-5'>環(huán)境變量</b>分區(qū)制作

    高性能計(jì)算之Module環(huán)境變量管理工具

    Module是一款環(huán)境變量管理工具,北鯤云超算平臺(tái)安裝了許多公共軟件,通過(guò)module實(shí)現(xiàn)軟件環(huán)境變量
    的頭像 發(fā)表于 11-21 16:57 ?2960次閱讀

    LINUX環(huán)境變量總結(jié)

    Linux是一個(gè)多用戶的操作系統(tǒng)。多用戶意味著每個(gè)用戶登錄系統(tǒng)后,都有自己專用的運(yùn)行環(huán)境。而這個(gè)環(huán)境是由一組
    發(fā)表于 01-29 10:55 ?437次閱讀

    6種Linux環(huán)境變量的配置方法

    在自定義安裝軟件的時(shí)候,經(jīng)常需要配置環(huán)境變量,下面列舉出各種對(duì)環(huán)境變量的配置方法。
    的頭像 發(fā)表于 02-16 10:34 ?1588次閱讀

    ros怎么設(shè)置環(huán)境變量

    可以使用的動(dòng)態(tài)的值,用于影響運(yùn)行程序的行為。環(huán)境變量通常包含一些關(guān)鍵信息,如路徑、用戶名、顏色選項(xiàng)等。 在ROS中,環(huán)境變量是重要的,因?yàn)樗鼈冇糜诖_定ROS如何運(yùn)行和找到相關(guān)文件和程序。 為什么要設(shè)置ROS
    的頭像 發(fā)表于 12-28 13:52 ?2049次閱讀

    Linux環(huán)境變量配置方法

    Linux上環(huán)境變量配置分為設(shè)置永久變量和臨時(shí)變量兩種。環(huán)境變量設(shè)置方法同時(shí)要考慮環(huán)境Shell類型,不同類型的SHELL設(shè)置臨時(shí)
    的頭像 發(fā)表于 10-23 13:39 ?159次閱讀
    主站蜘蛛池模板: 国产高清视频免费最新在线| 午夜天堂AV久久久噜噜噜| xxx性欧美在线观看| 青青草国产精品久久| 成人免费一区二区无码视频| 日韩欧无码一区二区三区免费不卡 | 欧美精品色视频| yellow在线中文| 日日夜夜国产| 国产亚洲福利精品一区| 一本道的mv中文字幕| 美女被C污黄网站免费观看| G国产精品无马| 天天摸夜添狠狠添高| 国内极度色诱视频网站| 影音先锋电影资源av| 欧美 国产 日产 韩国 在线| 扒开老师大腿猛进AAA片软件| 色偷偷亚洲天堂| 国产在线综合色视频| 在线欧美精品一区二区三区| 欧美丰满熟妇BBB久久久| 国产 亚洲 中文在线 字幕| 亚洲精品电影久久久影院| 两个吃奶一个添下面视频| 被高跟鞋调教丨vk| 亚洲 欧美 国产 综合五月天| 久久免费视频| 超碰在线视频人人AV| 性欧美xxxxporn| 快播黄色电影| 丰满的寡妇hd高清在线观看| 亚洲精品无码久久久久A片| 免费国产福利| 国产成人亚洲综合无| 野草观看免费高清视频| 墨西哥美女主播| 国产精品久久久久a影院| 中文字幕AV亚洲精品影视| 日韩一区二区天海翼| 教室眠催白丝美女校花|