Tutorial QSettings



  • @ /*
    A classe QSetings permite que o programador guarde informaçoes temporarias sem a necessidade de manipular arquivos como é feito normalmente.

    traduçao da definiçao segundo a documentaçao:
    Descrição Detalhada

    A classe QSettings fornece configurações persistência independentes de plataforma de aplicação.

    Os usuários normalmente esperam um aplicativo que lembre suas configurações (tamanhos de janela e posições, opções, etc) através de sessões. Esta informação é frequentemente armazenados no registro do sistema no Windows e em arquivos XML preferências no Mac OS X. Em sistemas Unix, na ausência de um padrão, muitas aplicações (incluindo as aplicações KDE) usar arquivos de texto INI.

    QSettings é uma abstração em torno destas tecnologias, permitindo que você salve e restaure as configurações do aplicativo de uma forma portátil. Ele também suporta formatos de armazenamento personalizados.

    API QSettings é baseada em QVariant, permitindo que você salve diversos tipos baseadas em valor, como QString, QRect, e QImage, com o mínimo de esforço.

    Se o que você precisa é uma estrutura de informaçoes nao-persistentes, considere o uso de QMap<QString, QVariant>.

    */
    //Exemplos de uso:

    QSettings setting("MinhaEmpresa","nomeaplicativo");
    /* ao criar um objeto do tipo QSettings, devemos passar como parametro para o contrutor da classe o nome da Organizaçao e o nome do aplicativo.
    Essas informaçoes sao apenas para caracteristicas de organizaçao, sendo assim, pode-se definir qualquer nome.
    */

    //podemos tambem, criar o objeto deixando que a aplicaçao defina o nome da organizaçao e o nome do aplicativo da seguinte maneira:

    QCoreApplication::setOrganizationName("nomeaplicativo");
    QCoreApplication::setOrganizationDomain("nomeaplicativo.com");
    QCoreApplication::setApplicationName("MinhaEmpresa");
    ...
    QSettings settings;

    //usa-se dessa forma, quando referenciamos muito a classe QSettings no momento em que temos mais de um aplicativo.

    //Inserindo valores
    setting.setValue("nome","Eduardo");
    //aqui, chamamos o metodo setValue do objeto setting passando como parametro uma referencia(id, para melhor entendimento) e o conteudo.

    //buscando valores
    QString str = setting.value("nome").toString();

    //podemos expecificar um valor padrao,caso nao exista nenhum. ex:
    QString str = setting.value("nome","Maria").toString();
    //se nao existir a informaçao, será atribuida a variavel str o conteúdo "maria" (sem aspas).

    //Sobrescrevendo valores:
    setting.setValue("nome","Rodrigo");
    setting.setValue("nome","Eduardo");
    setting.setValue("nome","Ana");
    if(setting.value("nome").toInt!=0)//verifica se é null
    {
    QString str = setting.value("nome").toString();
    qDebug()<<str;
    }

    // A saída no terminal será "Ana" pois o valor é sobrescrito a cada nova inserçao em uma dada referência.

    //Usando grupos para melhor organizaçao

    //podemos organizar por grupos, definindo um grupo diferente para cada form por exemplo.
    setting.beginGroup("MainWindow");//inicio do grupo
    setting.setValue("position",this->geometry());//armazena a localizaçao do forme por exemplo
    setting.endGroup();//fim do grupo

    //Buscando no grupo
    setting.beginGroup("MainWindow");//inicio do grupo
    QRect myrect = setting.value("position").toRect();
    setGeometry(myrect);
    setting.endGroup();//fim do grupo

    //tudo que foi descrito acima, no windows essas informaçoes sao armazenadas no registro e no linux em um arquivo .conf no diretorio do app.

    //a seguir um exemplo mais completo;

    #include "MainWindow.h"
    #include "QSettings"

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    connect(botao,SIGNAL(clicked()),this,SLOT(loadsettings()));
    this->loadsettings();

    }

    MainWindow::~MainWindow()
    {
    delete ui;
    }

    void MainWindow::savesettings()
    {
    //save
    QSettings setting("MyCompany","myapp");
    setting.beginGroup("MainWindow");
    setting.setValue("position",this->geometry());
    setting.endGroup();
    }

    void MainWindow::loadsettings()
    {
    //load
    QSettings setting("MyCompany","myapp");
    setting.beginGroup("MainWindow");
    //pegando o conteudo
    QRect myrect = setting.value("position").toRect();
    setGeometry(myrect);
    setting.endGroup();
    }

    //bibliografia
    // Documentaçao do Qt. site: http://qt-project.org/doc/qt-4.8/qsettings.html
    // canal voidrealms. site: http://www.youtube.com/watch?v=TNIkeFfzH-g&list=SP2D1942A4688E9D63&index=92

    @


  • Moderators

    Caso isto no wiki? (Perdoe minha tradução, por favor.)



  • Viva
    Gostei do tutorial, muito simples e facil de ler.



  • mlong, não entendi o seu comentario...



  • Ele quis dizer que,por ser um tutorial , o melhor lugar é o wiki.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.