4

のカスタム形式を作成しようとしていますQSettingsが、ストレージから読み取ることができません。

以下のコードでは、 を実行するsettings.setValue("test", 123")と、書き込み関数が正しく呼び出され、 が出力されCalling writeSqliteます。ただし、試してみるとsettings.value("test")、 read 関数が呼び出されず、出力されませんCalling readSqlite

何が問題になる可能性がありますか?

bool readSqlite(QIODevice &device, QSettings::SettingsMap &map) {
    qDebug() << "Calling readSqlite";
    return true;
}

bool writeSqlite(QIODevice &device, const QSettings::SettingsMap &map) {
    qDebug() << "Calling writeSqlite";
    return true;
}

void Settings::initialize() {
    const QSettings::Format SqliteFormat = QSettings::registerFormat("sqlite", &readSqlite, &writeSqlite);
    QSettings::setDefaultFormat(SqliteFormat);

    QSettings settings;
    // This doesn't work:
    // qDebug() << settings.value("test");

    // This works:
    // settings.setValue("test", 123456);
}
4

2 に答える 2

0

マイクの答えに基づいて、これが私が求めた解決策です。きれいではありませんが、機能します:

bool readSqlite(QIODevice &device, QSettings::SettingsMap &map) {
    // Read the map from SQL database
    return true;
}

bool writeSqlite(QIODevice &device, const QSettings::SettingsMap &map) {
    device.write("X", 1); // HACK - required to get readSqlite to work
    // Write the map to SQL database
    return true;
}

void Settings::initialize() {
    const QSettings::Format SqliteFormat = QSettings::registerFormat("sqlite", &readSqlite, &writeSqlite);
    QSettings::setDefaultFormat(SqliteFormat);
}
于 2017-01-07T08:59:03.487 に答える