首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Qt QSettings 類完整攻略:跨平台應用程式設定儲存

     編輯:關於C++

QSettings 簡介

QSettings 是 Qt 4 引入的跨平台設定儲存類別,自動根據平台選擇後端:

  • Windows:登錄表 或 .ini 檔案
  • macOS:.plist (XML) 檔案
  • Linux/Unix:.conf (INI 格式) 檔案

常用於儲存視窗幾何資訊(位置、大小)、最近開啟檔案清單、使用者偏好設定等。

建構函式與關鍵參數

QSettings(const QString &organization, const QString &application = QString(), QObject *parent = 0);
  • organization:公司/組織名稱(決定註冊表路徑或目錄名)
  • application:應用程式名稱(決定子鍵或檔案名)
  • 兩者讀寫時必須完全一致,否則無法讀取先前儲存的值。

基本讀寫操作

寫入設定

QSettings settings("MyCompany", "MyApp");
settings.setValue("window/pos", pos());
settings.setValue("window/size", size());

讀取設定(含預設值)

QSettings settings("MyCompany", "MyApp");
QPoint pos = settings.value("window/pos", QPoint(200, 200)).toPoint();
QSize size = settings.value("window/size", QSize(400, 400)).toSize();
resize(size);
move(pos);

value() 第二參數為預設值,首次執行或鍵值不存在時回傳預設值,避免空指標問題。

完整視窗狀態保存/還原範例

void MainWindow::readSettings() {
    QSettings settings("Yzs_think", "Application");
    QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
    QSize size = settings.value("size", QSize(400, 400)).toSize();
    resize(size);
    move(pos);
}

void MainWindow::writeSettings() {
    QSettings settings("Yzs_think", "Application");
    settings.setValue("pos", pos());
    settings.setValue("size", size());
}

在建構函式呼叫 readSettings(),關閉事件呼叫 writeSettings() 即可實現視窗狀態記憶。

進階用法提示

  • beginGroup()/endGroup():群組鍵值,避免命名衝突。
  • setFallbacksEnabled(false):關閉系統級回退機制,強制僅讀寫應用程式專屬設定。
  • 支援 QVariant 所有型別,含 QColor、QFont、自訂型別(需註冊串流運算子)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved