QSettings 是 Qt 4 引入的跨平台設定儲存類別,自動根據平台選擇後端:
常用於儲存視窗幾何資訊(位置、大小)、最近開啟檔案清單、使用者偏好設定等。
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、自訂型別(需註冊串流運算子)。