如何解决QSettings中的QStrings isNull是错误的
我注意到QSettings无法存储QString的isNull属性。在其他情况下(QTime),QSettings可以按预期工作。我有什么问题吗?
useEffect(() => {
dispatch({ type: "NAME_FIRST",nameFirst: nameFirst });
},[nameFirst]);
useEffect(() => {
dispatch({ type: "NAME_LAST",nameLast: nameLast });
},[nameLast]);
useEffect(() => {
dispatch({type: "NAME_EMAIL",nameEmail: nameEmail});
},[nameEmail]);
useEffect(() => {
dispatch({type: "NAME_PHONE",namePhone: namePhone});
},[namePhone]);
输出为
#include <QTime>
#include <QString>
#include <QSettings>
#include <iostream>
int main(int argc,char *argv[])
{
QString str;
QTime time;
std::cout << "String is null: " << std::boolalpha << str.isNull() << std::endl;
std::cout << "Time is null: " << std::boolalpha << time.isNull() << std::endl;
QSettings settings("Settings");
settings.setValue("string",str);
settings.setValue("time",time);
std::cout << "String is null: " << std::boolalpha << settings.value("string").toString().isNull() << std::endl;
std::cout << "Time is null: " << std::boolalpha << settings.value("time").toTime().isNull() << std::endl;
return 0;
}
解决方法
文档中的注释:“由于历史原因,Qt区分空字符串和空字符串。我认为最好不要依靠这种区别。与其设置一个空字符串,不如根本不设置该选项(或显式取消设置),则更好。
QSettings无法存储空字符串的实际原因很可能是存储格式根本不支持此功能。存储设置的一种常见格式是INI格式(请参见here),无法区分空和空。
除此之外,我将使用QVariant::isNull()而不是转换为字符串。
,请尝试键入settings.value("string").isNull()
而不是settings.value("string").toString().isNull()
。
因为您尝试强制转换为字符串,所以请输入null值。
我已使用此(how to initialize a QString to null?)帖子为您解答
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。