网站建设声明函,广州公司网站建设,南京做网站优化多少钱,wordpress目录分类如何使用QSettings类 QSettings类公共类型#xff08;枚举#xff09;公有成员函数静态成员函数函数作用这个类写文件的特征 QSettings类
QSettings类提供持久的独立于平台的应用程序设置。
头文件:#include QSettings qmake:QT core继承#xff08;父#xff09;:QObje… QSettings类 QSettings类公共类型枚举公有成员函数静态成员函数函数作用这个类写文件的特征 QSettings类
QSettings类提供持久的独立于平台的应用程序设置。
头文件:#include QSettings qmake:QT core继承父:QObject 公共类型枚举
0使用最适合平台的存储格式存储设置。 在Windows上这意味着系统注册表 在macOS和iOS上这意味着CFPreferences API在Unix上这意味着INI格式的文本配置文件。PC平台QSettings::NativeFormat 1将设置保存在INI文件中。注意INI文件失去了数字数据和用于编码它们的字符串之间的区别所以写为数字的值应该作为QString读回。嵌入式平台QSettings::IniFormat 在Unix上NativeFormat和IniFormat意思相同只是文件扩展名不同(。用于NativeFormat的配置。ini格式的ini)。 enum Format { NativeFormat, Registry32Format, Registry64Format, IniFormat, InvalidFormat }0将设置存储在特定于当前用户的位置(例如在用户的主目录中)。 1将设置存储在全局位置以便同一台计算机上的所有用户都可以访问同一组设置。
enum Scope { UserScope, SystemScope }0没有发生错误。 1出现访问错误(例如试图写入只读文件)。 2出现格式错误(例如加载格式错误的INI文件)。
enum Status { NoError, AccessError, FormatError }注意点 INI文件格式对键的语法有严格的限制。Qt通过在键中使用%作为转义字符来解决这个问题。此外如果您保存一个顶级设置(一个没有斜杠的键例如“someKey”)它将出现在INI文件的“General”部分。为了避免覆盖其他键如果您使用像“General/someKey”这样的键来存储内容该键将位于“%General”部分而不是“General”部分。 遵循我们应该在接受的内容上开明在生成的内容上保守的原则QSettings将接受Latin-1编码的INI文件但生成纯ASCII文件其中非ASCII值使用标准INI转义序列进行编码。为了提高INI文件的可读性(但可能不太兼容)可以调用setIniCodec()。 公有成员函数
返回类型函数构造函数QSettings(QSettings::Scope scope, QObject *parent nullptr)构造函数QSettings(QObject *parent nullptr)构造函数QSettings(const QString fileName, QSettings::Format format, QObject *parent nullptr)构造函数QSettings(QSettings::Format format, QSettings::Scope scope, const构造函数QSettings(QSettings::Scope scope, const QString organization, const构造函数QSettings(const QString organization, const QString application QString(), QObject *parent nullptr)virtual~QSettings()QStringListallKeys() constQStringapplicationName() constvoidbeginGroup(const QString prefix)intbeginReadArray(const QString prefix)voidbeginWriteArray(const QString prefix, int size -1)QStringListchildGroups() constQStringListchildKeys() constvoidclear()boolcontains(const QString key) constvoidendArray()voidendGroup()boolfallbacksEnabled() constQStringfileName() constQSettings::Formatformat() constQStringgroup() constQTextCodec *iniCodec() constboolisAtomicSyncRequired() constboolisWritable() constQStringorganizationName() constvoidremove(const QString key)QSettings::Scopescope() constvoidsetArrayIndex(int i)voidsetAtomicSyncRequired(bool enable)voidsetFallbacksEnabled(bool b)voidsetIniCodec(QTextCodec *codec)voidsetIniCodec(const char *codecName)voidsetValue(const QString key, const QVariant value)QSettings::Statusstatus() constvoidsync()QVariantvalue(const QString key, const QVariant defaultValue QVariant()) const 静态成员函数
返回类型函数QSettings::FormatdefaultFormat()QSettings::FormatregisterFormat(const QString extension, QSettings::ReadFunc readFunc, QSettings::WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity Qt::CaseSensitive)voidsetDefaultFormat(QSettings::Format format)voidsetPath(QSettings::Format format, QSettings::Scope scope, const QString path) 函数作用
构造函数
QSettings::QSettings(const QString organization, const QString application QString(), QObject *parent nullptr)代码
QSettings settings(Moose Soft, Facturo-Pro);相当于
QCoreApplication::setOrganizationName(Moose Soft);
QCoreApplication::setApplicationName(Facturo-Pro);
QSettings settings;常用构造函数
QSettings::QSettings(const QString fileName, QSettings::Format format, QObject *parent nullptr)构造一个QSettings对象用于访问存储在名为文件名带父级父母。如果该文件尚不存在则创建该文件。 如果格式是QSettings::NativeFormat的意思文件名取决于平台。在Unix上文件名是INI文件的名称。在macOS和iOS上文件名是的名称.plist文件。在Windows上文件名是系统注册表中的路径。 如果格式是QSettings::IniFormat, 文件名是INI文件的名称。 构造函数
QSettings::QSettings(QSettings::Format format, QSettings::Scope scope, const QString organization, const QString application QString(), QObject *parent nullptr)如果范围是QSettings::UserScopeQSettings对象首先搜索用户特定的设置然后作为后备搜索系统范围的设置。 如果范围是QSettings::SystemScopeQSettings对象忽略用户特定的设置并提供对系统范围设置的访问。 如果格式是QSettings::NativeFormat本机API用于存储设置。如果格式是QSettings::IniFormat则使用INI格式。 如果没有给出应用程序名称QSettings对象将只访问整个组织位置. 析构函数
QSettings::~QSettings()任何未保存的更改最终都将被写入永久存储。
获取所有键
QStringList QSettings::allKeys() const例子可以存储颜色点布尔等等
QSettings settings;
settings.setValue(fridge/color, QColor(Qt::white));
settings.setValue(fridge/size, QSize(32, 96));
settings.setValue(sofa, true);
settings.setValue(tv, false);QStringList keys settings.allKeys();
// keys: [fridge/color, fridge/size, sofa, tv]如果使用beginGroup()设置组则只返回组中的键而不返回组前缀:
settings.beginGroup(fridge);
keys settings.allKeys();
// keys: [color, size]开始一个组
void QSettings::beginGroup(const QString prefix)向当前组追加前缀。 当前组自动添加到指定给QSettings的所有键的前面。此外查询函数如childGroups()、childKeys()和allKeys()都是基于组的。默认情况下不设置任何组。 群组有助于避免反复键入相同的设置路径。例如:
settings.beginGroup(mainwindow);
settings.setValue(size, win-size());
settings.setValue(fullScreen, win-isFullScreen());
settings.endGroup();settings.beginGroup(outputpanel);
settings.setValue(visible, panel-isVisible());
settings.endGroup();调用endGroup()将当前组重置为对应的beginGroup()调用之前的状态。组可以嵌套。 向当前组添加前缀并开始从数组中读取。返回数组的大小。
int QSettings::beginReadArray(const QString prefix)struct Login {QString userName;QString password;
};
QListLogin logins;
...QSettings settings;
int size settings.beginReadArray(logins);
for (int i 0; i size; i) {settings.setArrayIndex(i);Login login;login.userName settings.value(userName).toString();login.password settings.value(password).toString();logins.append(login);
}
settings.endArray();向当前组添加前缀并开始写入大小为size的数组。如果size为-1(默认值)则根据写入条目的索引自动确定。 如果某一组键出现了很多次可以使用数组来简化操作。例如假设您想要保存一个可变长度的用户名和密码列表。然后你可以写:
void QSettings::beginWriteArray(const QString prefix, int size -1)struct Login {QString userName;QString password;
};
QListLogin logins;
...QSettings settings;
settings.beginWriteArray(logins);
for (int i 0; i logins.size(); i) {settings.setArrayIndex(i);settings.setValue(userName, list.at(i).userName);settings.setValue(password, list.at(i).password);
}
settings.endArray();存储格式
logins/size
logins/1/userName
logins/1/password
logins/2/userName
logins/2/password
logins/3/userName
logins/3/password
...如果存在名为key的设置则返回true否则返回false。
bool QSettings::contains(const QString key) const返回使用此QSettings对象写入的设置的存储路径。
QString QSettings::fileName() const删除设置键和键的任何子设置。
void QSettings::remove(const QString key)例子
QSettings settings;
settings.setValue(ape);
settings.setValue(monkey, 1);
settings.setValue(monkey/sea, 2);
settings.setValue(monkey/doe, 4);settings.remove(monkey);
QStringList keys settings.allKeys();
// keys: [ape]请注意如果其中一个回退位置包含具有相同键的设置则在调用remove()后该设置将可见。 如果key为空字符串则删除当前组()中的所有键。例如:
QSettings settings;
settings.setValue(ape);
settings.setValue(monkey, 1);
settings.setValue(monkey/sea, 2);
settings.setValue(monkey/doe, 4);settings.beginGroup(monkey);
settings.remove();
settings.endGroup();QStringList keys settings.allKeys();
// keys: [ape]注意Windows注册表和INI文件使用不区分大小写的键而macOS和iOS上的CFPreferences API使用区分大小写的键。为了避免可移植性问题。 设置访问INI文件的编解码器(包括。Unix上的conf文件)转换为编解码器。编解码器用于对从INI文件读取的任何数据进行解码并对写入文件的任何数据进行编码。默认情况下不使用编解码器非ASCII字符使用标准INI转义序列进行编码。
void QSettings::setIniCodec(QTextCodec *codec)警告:在访问任何数据之前必须在创建QSettings对象之后立即设置编解码器。 设置访问INI文件的编解码器(包括。conf文件)转换为由codecName指定的编码的QTextCodec。codecName的常用值包括“UTF-8”、“ISO 8859-1”和“UTF-16”。如果编码没有被识别什么都不会发生。
void QSettings::setIniCodec(const char *codecName)将用于存储给定格式和范围的设置的路径设置为path。该格式可以是自定义格式。
void QSettings::setPath(QSettings::Format format, QSettings::Scope scope, const QString path)下表总结了默认值: 将设置键的值设置为value。如果该键已经存在以前的值将被覆盖。
void QSettings::setValue(const QString key, const QVariant value)注意Windows注册表和INI文件使用不区分大小写的键而macOS和iOS上的CFPreferences API使用区分大小写的键。 将任何未保存的更改写入永久存储并重新加载同时已被另一个应用程序更改的任何设置。 这个函数由QSettings的析构函数自动调用并由事件循环定期调用所以通常不需要自己调用。
void QSettings::sync()返回设置键的值。如果该设置不存在则返回defaultValue。 如果没有指定默认值则返回默认的QVariant。
注意Windows注册表和INI文件使用不区分大小写的键而macOS和iOS上的CFPreferences API使用区分大小写的键。
QVariant QSettings::value(const QString key, const QVariant defaultValue QVariant()) constQSettings settings;
settings.setValue(animal/snake, 58);
settings.value(animal/snake, 1024).toInt(); // returns 58
settings.value(animal/zebra, 1024).toInt(); // returns 1024
settings.value(animal/zebra).toInt(); // returns 0这个类写文件的特征
用户通常希望应用程序记住它的设置(窗口大小和位置选项等)。)跨会话。 这些信息通常存储在Windows的系统注册表中以及macOS和iOS的属性列表文件中。 在Unix系统上由于缺乏标准许多应用程序(包括KDE应用程序)都使用INI文本文件。 QSettings是围绕这些技术的抽象使您能够以可移植的方式保存和恢复应用程序设置。它还支持自定义存储格式。 QSettings的API基于QVariant可以让你用最少的努力保存大多数基于值的类型比如QString、QRect、QImage 。 如果您只需要一个非持久的基于内存的结构可以考虑使用QMapQStringQVariant 来代替。 QSettings对象既可以在堆栈上创建也可以在堆上创建(即使用new)。构造和销毁QSettings对象的速度非常快。
学完一定要看看妹子放松下