QT保存设置QSetting
来源:互联网 发布:pdf笔记软件 编辑:程序博客网 时间:2024/04/29 22:20
当应用中有设置偏好时,必然的就需要保存用户的设置(总不能让用户每次打开软件都去设置一遍吧。。。)。要想保存用户设置,QT提供了QSetting类,可以轻松的完成,而且还能跨应用访问,其实QSetting不只是能保存用户设置,不管什么变量都可以保存,包括用户登录状态等,虽然这可能不是最好的选择!使用QSetting时,会涉及到QVariant类的部分内容,下面来看看如何使用它们。
QSetting
初始化
QSettings settings("Company", "App");
如果在应用多个地方使用QSetting
,应该这样设置:
QCoreApplication::setOrganizationName("Company");QCoreApplication::setOrganizationDomain("Company.com");QCoreApplication::setApplicationName("App");...QSettings settings;
在OS X
中,使用Domains取代Name来识别软件(如果不设置Domain,程序将根据Name推断Domain)
存储
void QSettings::setValue(const QString & key, const QVariant & value)
注意:修改原有设置不能立即生效,可使用sync()提交更改
读取
QVariant QSettings::value(const QString & key, const QVariant & defaultValue = QVariant()) const
当key不存在,返回NULL(defaultValue未设置时)或返回defaultValue。
存在性检测与删除
检测某个key存在性
bool QSettings::contains(const QString & key) const
删除某个key
void QSettings::remove(const QString & key)
查看所有key值
QStringList QSettings::allKeys() const
删除所有key
void QSettings::clear()
前缀
void QSettings::beginGroup(const QString & prefix)void QSettings::endGroup()
可在beginGroup()
与endGroup()
之间使用多个setValue()
。
QSetting同样支持array概念
int QSettings::beginReadArray(const QString & prefix)void QSettings::beginWriteArray(const QString & prefix, int size = -1)
Fallback机制
key值查找顺序(假设公司为MySoft,应用为Star Runner)
1. a user-specific location for the Star Runner application
2. a user-specific location for all applications by MySoft
3. a system-wide location for the Star Runner application
4. a system-wide location for all applications by MySoft
设置QSetting对象
QSettings(Format format, Scope scope, const QString & organization, const QString & application = QString(), QObject * parent = 0)
Scope: QSettings::SystemScope、QSettings::UserScope
Format: QSettings::IniFormat、QSettings::NativeFormat
储存和恢复GUI程序
void MainWindow::writeSettings(){ QSettings settings("Moose Soft", "Clipper"); settings.beginGroup("MainWindow"); settings.setValue("size", size()); settings.setValue("pos", pos()); settings.endGroup();}void MainWindow::readSettings(){ QSettings settings("Moose Soft", "Clipper"); settings.beginGroup("MainWindow"); resize(settings.value("size", QSize(400, 400)).toSize()); move(settings.value("pos", QPoint(200, 200)).toPoint()); settings.endGroup();}MainWindow::MainWindow(){ ... readSettings();}void MainWindow::closeEvent(QCloseEvent *event){ if (userReallyWantsToQuit()) { writeSettings(); event->accept(); } else { event->ignore(); }}
QVariant
转型
QVariant未提供由QVariant类型转换为QColor、QImage、QPixmap类型(但后者可转换为前者类型),但可以使用下面的Template函数来实现转型
T QVariant::value() constT qVariantValue(const QVariant & value)
注册用户类型
int qRegisterMetaType(const char * typeName)void qRegisterMetaTypeStreamOperators(const char * typeName)
- QT保存设置QSetting
- QT保存设置QSetting
- QT之QSetting类
- QT之QSetting类
- QSetting Qt配置文件使用说明
- QT之QSetting类
- qt配置 QSetting使用方法
- qt配置文件 QSetting使用方法
- Qt-QSetting(ini文件、注册表)
- QT之QSetting的使用
- QSetting:Qt读写配置文件实例
- QSetting
- QSetting
- QSetting
- QSetting
- 自学QT之QSetting的使用
- Qt之用QSetting读取配置文件
- QT 使用QSetting读取配置文件中的中文乱码解决方案
- C语言------指针(二)
- 编程挑战系统的输入和输出详细说明
- Wondershare Video Converter Ultimate V8.0.5.1-DVT
- 回看腾讯这些年(文末有感)
- dfs
- QT保存设置QSetting
- Make prettier documents by reusing chunks in RMarkdown
- Accelerated C++ Exercises Ch12
- Appserv 2.5.10 升级PHP from version 5.2 to 5.3
- 替换空格
- mybatis与spring3.1整合
- gson递归解析json数据
- Java设计模式-7-中介者模式
- CodeForces 13C Sequence