我QSettings用来在Windows中将一些数据存储为ini文件.我想看看ini文件,但我不知道ini文件的位置是什么.
这是我的代码:
QSettings *set = new QSettings(QSettings::IniFormat, QSettings::UserScope, "bbb", "aaa");
set->setValue("size", size());
set->setValue("pos", pos());
Run Code Online (Sandbox Code Playgroud)
我在哪里看?或者我可能会错过将其写入文件的代码?什么时候QSettings写出它的价值?
我需要通过QSettings在注册表中存储自定义类的实例.从Qt的文档中读取后,我认为我已经实现了所需的功能,但我没有设法保存任何东西.
这是我的自定义类:
class SRSDefinition{
public:
SRSDefinition(QString name, QString definition) : qsName(name), qsDefinition(definition)
{
qRegisterMetaType<SRSDefinition>("SRSDefinition");
qRegisterMetaTypeStreamOperators<SRSDefinition>("SRSDefinition");
}
SRSDefinition(const SRSDefinition& original) : qsName(original.qsName), qsDefinition(original.qsDefinition) {}
SRSDefinition() : qsName(""), qsDefinition(""){}
~SRSDefinition();
QString qsName;
QString qsDefinition;
private:
friend QDataStream& operator << (QDataStream& out, const SRSDefinition& valeur) {out << valeur.qsName << valeur.qsDefinition; return out; }
friend QDataStream& operator >> (QDataStream& in, SRSDefinition& valeur) {in >> valeur.qsName >> valeur.qsDefinition; return in;}
};
Q_DECLARE_METATYPE(SRSDefinition)
QDataStream& operator << (QDataStream& out, const SRSDefinition& Valeur);
QDataStream& operator >> (QDataStream& in, …Run Code Online (Sandbox Code Playgroud) 我有一个基于Qt(4.8.5)的应用程序在OS X 10.9上运行.该应用程序使用QSettings类指定应用程序名称和公司.Plist文件由QSetttings在以下位置创建:
~/Library/Preferences/com.company_name.app_name.plist
该应用程序在保存/恢复首选项方面非常好.然后我退出应用程序,删除*.plist文件,再次运行应用程序并瞧 - 它恢复了它的首选项!根据什么文件?热门删除吗?
我无法在Qt doc for QSettings类中找到答案.
有两种可能的方法:
哪种方法更好?
我要做的是检查注册表中是否存在注册表项(NOT VALUE,KEY).我找不到任何方法来检查.
理念?
我想在我在Android上运行的qt应用程序中保存一些用户凭据.我这样使用QSettings:
QString appPath = QCoreApplication::applicationDirPath()+QLatin1Char('/');
set = new QSettings(appPath+"test",
QSettings::NativeFormat);
set->setValue ( "user/username", "NameOfTheUser" );
set->setValue ( "user/password", "UserPassword" );
set->sync();
Run Code Online (Sandbox Code Playgroud)
我重新启动应用程序并在我的initialize()方法中:
QString username(set->value("user/username",
( QVariant ) tr ( "defaultUser" ) ).toString());
QString password(set->value("user/password",
( QVariant ) tr ( "defaultPass" ) ).toString());
Run Code Online (Sandbox Code Playgroud)
不会从QSettings中读取用户名和密码变量.
相同的代码在Windows上运行.
谢谢
我从某个位置上传文件,然后下次上传必须指向上次上传的位置.我怎样才能完成这样的使用QSettings?
我正在使用QSettings一些设置存储在INI文件中.但是,我的程序不是英文,因此某些设置包含Unicode字符串.似乎Qt写的INI文件不是在utf8或utf16中,而是在其他一些编码中,字符串"Приветмир!" (rus."Hello world!")看起来像这样:
WindowTitle=\x41f\x440\x438\x432\x435\x442 \x43c\x438\x440!
Run Code Online (Sandbox Code Playgroud)
我想手动编辑设置文件,但我不能像这样使用它.有没有办法强制Qt以Unicode保存?
我想用来QSettings保存高分,但它无法正常工作.我正在保存并在2个不同的文件中读取这些值.
这是我负责将值添加到数组中的代码:
QSettings settings;
settings.beginWriteArray("results");
int size = settings.beginReadArray("results");
settings.setArrayIndex(size);
settings.setValue("result", "qwerty");
Run Code Online (Sandbox Code Playgroud)
和阅读:
QSettings settings;
QString tmp = "";
int size = settings.beginReadArray("results");
for(int i = 0; i < size; ++i)
{
settings.setArrayIndex(i);
tmp += settings.value("result").toString();
}
ui->label->setText(tmp);
Run Code Online (Sandbox Code Playgroud) 该文档将该QSettings::clear功能描述为:
删除与此 QSettings 对象关联的主要位置中的所有条目。
回退位置中的条目不会被删除。
但是,这是什么意思?主要位置和后备位置是什么???