gpt4 book ai didi

qt - 无法从自定义存储格式中读取 QSettings

转载 作者:行者123 更新时间:2023-12-03 16:21:15 24 4
gpt4 key购买 nike

我正在尝试为 QSettings 创建自定义格式,但无法从存储中读取它。

在下面的代码中,如果我运行 settings.setValue("test", 123") ,它会正确调用 write 函数并打印 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);
}

最佳答案

QSettings除非设置文件是 ,否则不会调用自定义读取函数(在您的情况下为 readSqlite)可读 具有非零大小 (显然,不满足这些条件就不需要调用)。见 source code here .

由于您的自定义写入功能并没有真正向 device 写入任何内容,您的设置文件为空,并且 readSqlite不叫。

如果您想查看您的 readSqlite函数被调用,您可以在设置文件中添加一些任意数据,或者添加一些 device.write() 调用您的 writeSqlite实现,以及您的 readSqlite函数将在下一次运行中被调用。

关于qt - 无法从自定义存储格式中读取 QSettings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41495765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com