0

我的应用程序的 mac 版本刚刚开始破坏我使用 QSettings 保存和恢复的全屏和正常布局。甚至我的应用程序的旧版本现在也正在为我的客户使用。

当我发现一个包含有趣行的错误报告时,我只是在谷歌上搜索类似的东西:

QSettings s;
restoreState(s.value(QString::fromLocal8Bit("state")).toByteArray());

当保存到计算机 plist 或 windows 注册表时,我是否必须格式化 fromLocal8bit() 中的数据?

http://bugreports.qt-project.org/browse/QTBUG-8631
http://bugreports.qt-project.org/secure/attachment/13400/main.cpp

4

1 回答 1

1

它是被编码的数据,它只是字面的“状态”。如果您使用 QByteArray 或 QString ,这些值将被正确编码和解码。QString::fromLocal8Bit() 部分用于将源文件中的字符串文字转换为 unicode 字符串。在源文件中坚持使用 ASCII 是一种很好的做法,因为 UTF-8 等其他编码通常不适用于所有编译器,尤其是 MSVC。

要将文字转换为 QString,我建议使用 QLatin1String:

QLatin1String("state")

fromLocal8Bit() 严格来说是错误的,因为本地 8 位编码与文字来源的源文件编码无关。但由于“状态”不包含任何非 ascii 字符,所以无论如何都应该无关紧要。

于 2011-04-08T11:29:24.170 回答