Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Portuguese
  4. Tutorial QSettings
Forum Updated to NodeBB v4.3 + New Features

Tutorial QSettings

Scheduled Pinned Locked Moved Portuguese
5 Posts 4 Posters 2.7k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    Rodrigocg
    wrote on last edited by
    #1

    @ /*
    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

    @

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mlong
      wrote on last edited by
      #2

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

      Software Engineer
      My views and opinions do not necessarily reflect those of anyone -- living or dead, real or fictional -- in this universe or any other similar multiverse node. Void where prohibited. Your mileage may vary. Caveat emptor.

      1 Reply Last reply
      0
      • J Offline
        J Offline
        john_god
        wrote on last edited by
        #3

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

        1 Reply Last reply
        0
        • R Offline
          R Offline
          Rodrigocg
          wrote on last edited by
          #4

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

          1 Reply Last reply
          0
          • T Offline
            T Offline
            TioRoy
            wrote on last edited by
            #5

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

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved