Qt下QSettings类详解
当前位置:以往代写 > C/C++ 教程 >Qt下QSettings类详解
2019-06-13

Qt下QSettings类详解

Qt下QSettings类详解

Qt4.0中又增加了一个很是有用的类QSettings,这个类是Qt4提供的一个读取设置文件的类,在Windows平台上,它提供了ini文件的读写,以及注册表的读写成果。我们都知道,用户对付应用措施常常有某种需要,好比说:窗体的巨细,呈现的位置,以及最近打开的文件等等,而这些需求均可由QSettings类实现。

一般来说settings都存放在系统之中,在windows操纵系统下一般都是ini加密文件中可能是系统的注册表中,而对付mac系统来说,一般存放在XML文件中,下面我们就来看看它的详细用法。

读过《C++ GUI Programming with Qt 4, Second Edition》这本书的人应该都碰着过这个疑问,我们先来看看它的结构函数吧:

QSettings ( const QString & organization, const QString & application = QString(), QObject * parent = 0 )    
QSettings ( Scope scope, const QString & organization, const QString & application = QString(), QObject * parent = 0 )    
QSettings ( Format format, Scope scope, const QString & organization, const QString & application = QString(), QObject * parent = 0 )    
QSettings ( const QString & fileName, Format format, QObject * parent = 0 )    
QSettings ( QObject * parent = 0)

当我们建设一个QSettings的工具时,一般需要通报两个参数,第一个是公司可能组织的名称,第二个是应用措施的名称,我们以例子来说明问题:

QSettings settings("Yzs_think", "Application");

公司或组织名称:Yzs_think, 措施名称:Application

下面就要对其值举办配置(一般用法):

1、写入数据:

QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();    
QSize size = settings.value("size", QSize(400, 400)).toSize();    
resize(size);    
move(pos);

第一句是配置窗口呈现的位置坐标,第二句实现了对窗口巨细的配置,第三局和第四句假如 settings 里有以前存下的 ( 用 setValue 配置的 )pos 和 size 的值,则读取,假如没有,不会返回 null ,而会利用我们给它的起始值—— default value ——即应用措施第一次运行时的环境。

2、读出信息数据

QSettings settings("Yzs_think", "Application");    
settings.setValue("pos", pos());    
settings.setValue("size", size());

这里值得留意的是写数据和读数据的时候的公司名称与应用措施名称必需一样,不然无法正常读取。

下面我们以一段详细的措施来说明问题:

void MainWindow::readSettings()    
{    
    QSettings settings("Yzs_think", "Application");    
    QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();    
    QSize size = settings.value("size", QSize(400, 400)).toSize();    
    resize(size);    
    move(pos);    
}    

void MainWindow::writeSettings()    
{    
    QSettings settings("Yzs_think", "Application");    
    settings.setValue("pos", pos());    
    settings.setValue("size", size());    
}

尔后在我们的措施中,每次从头打开应用措施时,其窗口巨细和位置都是上一次封锁之前的位置。

本文出自 “驿落薄暮” 博客,请务必保存此出处http://yiluohuanghun.blog.51cto.com/3407300/952807

    关键字:

在线提交作业