C++ QStrings为null,因为QSettings是错误的

C++ QStrings为null,因为QSettings是错误的,c++,qt,C++,Qt,我注意到QSettings不能存储QString的isNull属性。在其他情况下,Q时间设置按预期工作。我有什么不对劲吗 #include <QTime> #include <QString> #include <QSettings> #include <iostream> int main(int argc, char *argv[]) { QString str; QTime time; std::cout <&l

我注意到QSettings不能存储QString的isNull属性。在其他情况下,Q时间设置按预期工作。我有什么不对劲吗

#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;
}
请尝试键入settings.valuestring.isNull,而不是settings.valuestring.toString.isNull。 因为您尝试强制转换为字符串类型null值

我用这篇文章来回答你

尝试键入settings.valuestring.isNull而不是settings.valuestring.toString.isNull。 因为您尝试强制转换为字符串类型null值


我用这篇文章来回答您的问题。

文档中的注释:出于历史原因,Qt区分了空字符串和空字符串。我认为最好不要依赖这种区别。与其设置空字符串,不如根本不设置该选项或显式取消设置它

QSettings无法存储空字符串的实际原因很可能是存储格式根本不支持这一点。存储设置的一种常见格式是INI格式see,它无法区分空和空


除此之外,我将使用而不是转换为字符串。

文档中的注释:出于历史原因,Qt对空字符串和空字符串进行了区分。我认为最好不要依赖这种区别。与其设置空字符串,不如根本不设置该选项或显式取消设置它

QSettings无法存储空字符串的实际原因很可能是存储格式根本不支持这一点。存储设置的一种常见格式是INI格式see,它无法区分空和空


除此之外,我将使用而不是转换为字符串。

谢谢,我没有注意到ini无法区分空和空。谢谢,我没有注意到ini无法区分空和空。在本例中,变量也不为空。在本例中,变量也不为空。
String is null: true
Time is null: true
String is null: false
Time is null: true