我注意到QSettings无法存储QString的isNull属性。在其他情况下(QTime),QSettings可以按预期工作。我有什么问题吗?
#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;
}
输出是String is null: true
Time is null: true
String is null: false
Time is null: true
最佳答案
从文档中注意:“由于历史原因,Qt区分空字符串和空字符串。”我认为最好不要依靠这种区别。与其设置一个空字符串,不如根本不设置该选项(或显式取消设置),则更好。
QSettings无法存储空字符串的实际原因很可能是存储格式根本不支持此功能。存储设置的一种常见格式是INI格式(请参见here),该格式无法区分空和空。
除此之外,我将使用QVariant::isNull()而不是转换为字符串。
关于c++ - QSettings中的QStrings isNull是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63358696/