QT之INI檔案和登錄檔操作方法學習筆記
INI檔案格式
節[section]
引數(KEY/VALUE) name=value
註釋 註釋使用分號表示(;)。在分號後面的文字,直到該行結尾都全部為註釋
QCoreApplication::applicationDirPath()為應用程式當前的絕對路徑
QSettings(const QString &fileName, QSettings::Format format, QObject *parent = nullptr)
void QSettings::beginGroup(const QString &prefix)
讀取節點下對應key的值:
QVariant QSettings::value(const QString &key, const QVariant &defaultValue = QVariant()) const
設定節點下對應key的值,如果節點下不存在對應的key,則會在該節點下建立一個新的key:
void QSettings::setValue(const QString &key, const QVariant &value)
void QSettings::beginWriteArray(const QString
int QSettings::beginReadArray(const QString &prefix)
struct Login { QString userName; QString password; }; QList<Login> logins; ... QSettings settings; int size = settings.beginReadArray("logins"); for (int i = 0; i < size; ++i) { settings.setArrayIndex(i); Login login; login.userName = settings.value("userName").toString(); login.password = settings.value("password").toString(); logins.append(login); } settings.endArray();
struct Login {
QString userName;
QString password;
};
QList<Login> logins;
...
QSettings settings;
settings.beginWriteArray("logins");
for (int i = 0; i < logins.size(); ++i) {
settings.setArrayIndex(i);
settings.setValue("userName", list.at(i).userName);
settings.setValue("password", list.at(i).password);
}
settings.endArray();
中文時需要設定ini檔案的編碼方式,否則會出現亂碼
void QSettings::setIniCodec(const char *codecName)
登錄檔
登錄檔(Registry)是Microsoft Windows中的一個重要的資料庫,用於儲存系統和應用程式的設定資訊。
登錄檔編輯器:%systemroot%/regedit.exe
QSettings::QSettings(QSettings::Format format, QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr)