91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

保存應用程序設置(QSettings)

發布時間:2020-07-26 12:44:21 來源:網絡 閱讀:794 作者:WZM3558862 欄目:開發技術

保存應用程序設置(QSettings)

1.   QSettings 類

 

  • QSettings 提供保存應用程序當前設置的接口,可以方便地保存程序的狀態,例如窗口大小和位置,選項的選中狀態等等。

 

  • 在 Windows 系統中,程序程序的狀態信息記錄在注冊表中;在 Mac OS X 系統上,這些信息記錄在 XML 配置文件中;在 Unix 系統中,則使用 INI text 文件記錄。QSettings 則是對這些技術的一個抽象,使得保存和取得應用程序的設置狀態的只得獨立于操作系統。

 

  • QSettings 的 API 是基于 QVariant 類,當創建一個 QSettings 對象時,必須傳遞公司或組織的名稱(QString)和應用程序的名稱(QString)用于構造一個 QSettings 對象。

 

2.   使用 QSettings

 

(1)構造一個 QSettings 對象

 

  • QSettings settings("MySoft", "Star Runner") ;

 

(2)添加一個設置到 settings 中

 

  • 程序的設置是以“key-value”的形式,保存在 QSettings 對象中的。其中,key 由一個 QString 類型定義,value 是由 QVariant 類型定義:

 

  • settings.setValue( "editor/wrapMargin", 68 ) ;

         /*  wrapMargin 是一個子 key

         /*  如果存在相同的 key,那么已存在的 key 所對應的值將由新值代替

 

(3)從 setttings 中取出設置

 

  • 同時也可以通過 key 從 settings 中取出值:

 

  • int margin = settings.value( "editor/wrapMargin").toInt( ) ;

 

3.   QSettings 的組織方式

 

(1)用“/”表示子 key

 

  • QSettings 存儲狀態信息的形式是 key-value,其中 key 與文件路徑這個概念是類似的,subkey 可以用定義文件路徑的形式定義,例如 findDialog/ matchCase,其中 matchCase 就是一個 subkey;

 

(2)使用 beginGroup( ) 和 endGroup( ) 

 

  • void QSettings : : beginGroup( const QString &prefix ) 的作用是在當前的 group 后面加上 prefix。當前的 group 自動加到一個 QSettings 對象的尾部:

 

settings.beginGroup("mainwindow") ;

settings.setValue("size", win->size( ) ) ;

settings.setValue("fullScreen", win->isFullScreen( ) ) ;

settings.endGroup( ) ;

 

settings.beginGroup("outputpanel") ;

settings.setValue("visible", panel->isVisible( ) ) ;

settings.endGroup( ) ;

 

  • 這樣設置后,當前的 settings 對象看上去應該是這樣的層次結構:

 

mainwindow/ size

mainwindow/ fullScreen

outputpanel/ visible

 

(3)取得 key 與子 key

 

  • QStringList QSettings : : childKeys( ) const 函數返回所有頂層 keys,組成一個 QStringList 作為一個返回值。例如:

 

QSettings settings ;

settings.setValue("fridge/color", Qt::white) ;

settings.setValue("fridge/size", QSize(32, 96) ) ;

settings.setValue("sofa", true) ;

settings.setValue("tv", false) ;

QStringList keys = settings.childKeys( ) ;

 

  • 那么這個 keys 中看上去應該是這樣的:

 

  • keys: [ "sofa", "tv" ]

 

  • QStringList QSettings : : childGroups ( ) const 是返回所有包含有 key 的頂層 groups,組成一個 QStringList 作為返回值:

 

QSettings settings ;

settings.setValue("fridge/color",Qt::white); 

settings.setValue("fridge/size",QSize(32,96)); 

settings.setValue("sofa",true); 

settings.setValue("tv",false);

QStringList groups = settings.childGroups() ;

 

  • 則 groups 看上去是:

  • groups : [ "fridge" ]

 

4.   保存和取得程序的設置

 

(1)在主窗口的構造函數中,readSettings( )

 

void MainWindow::readSettings()
{
   QSettings settings("Software Inc.", "Spreadsheet");   // 寫入與讀取的 settings 要一致

   restoreGeometry(settings.value("geometry").toByteArray());

   recentFiles = settings.value("recentFiles").toStringList();
   updateRecentFileActions();

   bool showGrid = settings.value("showGrid", true).toBool();
   showGridAction->setChecked(showGrid);

   bool autoRecalc = settings.value("autoRecalc", true).toBool();
   autoRecalcAction->setChecked(autoRecalc);
}

 

(2)在關閉主窗口時,writeSettings( )

 

void MainWindow::writeSettings()
{
   QSettings settings("Software Inc.", "Spreadsheet");

   settings.setValue("geometry", saveGeometry());
   settings.setValue("recentFiles", recentFiles);
   settings.setValue("showGrid", showGridAction->isChecked());
   settings.setValue("autoRecalc", autoRecalcAction->isChecked());
}

/* 這


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

九寨沟县| 临泽县| 肇东市| 肇源县| 乐昌市| 依兰县| 澜沧| 山东省| 和龙市| 衡阳县| 鄢陵县| 赤水市| 威远县| 海安县| 和政县| 舞阳县| 镇坪县| 崇仁县| 桃江县| 甘孜县| 阿尔山市| 蓬溪县| 车致| 湟中县| 昌黎县| 清河县| 磐安县| 溧水县| 三门县| 汾西县| 大同县| 黎川县| 翁牛特旗| 铁岭市| 南昌县| 闽侯县| 宁津县| 通江县| 华安县| 浮梁县| 奎屯市|