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
Qt 6.11 is out! See what's new in the release blog

Tutorial QSettings

Scheduled Pinned Locked Moved Portuguese
5 Posts 4 Posters 3.1k 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