我正在使用QSettings来尝试确定INI是否有效。(使用status()来检查)我做了一个故意无效的INI文件并将其加载。第一次调用代码时,它返回invalid,但每次之后,它返回有效。这是我代码中的错误吗?
答案 0 :(得分:1)
这是一个全球状态导致的 Qt bug 。请注意,无论您是否在QSettings对象上调用delete
,都会发生结果差异。以下是第一次运行时所发生情况的简要总结:
NoError
。qsettings.cpp
第1530行(Qt-4.6.2)进行解析qsettings.cpp
第1552行)。第二轮不同:
NoError
。qsettings.cpp
第1424行)。NoError
- 假定文件已被正确解析。答案 1 :(得分:0)
检查您的代码,您需要在返回之前删除文件对象。
除此之外,您的代码使用QSettings::QSettings(fileName, format)
c'tor打开ini文件。该调用以函数QConfFile::fromName
结尾(在qsettings.cpp中实现)。当我读它(有一些宏,我决定不遵循),如果文件已经打开(即你上次没有删除对象),文件不会重新打开。因此,状态第二次就可以了。