Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Portuguese
  4. UI dinâmico vs estático
Forum Updated to NodeBB v4.3 + New Features

UI dinâmico vs estático

Scheduled Pinned Locked Moved Portuguese
5 Posts 3 Posters 2.5k 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.
  • E Offline
    E Offline
    Exotic_Devel
    wrote on last edited by
    #1

    Quais os prós e contras de se optar por compilar ou interpretar os arquivos ui? Vi que pode-se optar por não compilar os arquivos ui. Ao invés disso é possível interpretá-los em tempo de execução.

    Quais os pós e contras de ambos?

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

      Eu não sabia que era possível interpretar arquivos ui dinamicamente, bacana. Você tem algum exemplo?

      Como nunca usei não sei falar ao certo mas a vantagem de interpretar arquivos ui seria a facilidade em mudar a interface sem ter que recompilar o código.
      Você pode facilmente criar duas ou três telas para determinada parte do programa e decidir em tempo de execução qual carregar.
      Tenho quase certeza também de que a abordagem de interpretação é mais lenta.

      Fora isso não sei te falar mais nada.

      Poderíamos montar um teste de desempenho de forma a calcular o tempo para carregamento de uma tela interpretada e compilada com o mesmo ui, o que você acha?

      1 Reply Last reply
      0
      • E Offline
        E Offline
        Exotic_Devel
        wrote on last edited by
        #3

        Sim, é possivel o nome do interpretador é o QUiLoader "Fonte":http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html#run-time-form-processing
        "QUiLoader":http://qt-project.org/doc/qt-4.8/quiloader.html

        Não tinha pensado ainda nessa vantagem que você citou, realmente, podemos mudar um formulário em tempo de execução, bastando fazer alterações no arquivo XML.

        Uma outra vantagem, básica pode-se dizer, é o fato de você ter um fonte mais enxuto, ou seja, o fonte, em parte, serão apenas as regras de negócio, persistência, objetos e classes de controle. Com isso consegue-se facilmente e de forma extrema a tão desejada separação da GUI do código estruturas de controle.

        Que é mais lento isso é praxe, a questão é se é uma lentidão aceitável. Gostaria também de saber quais seriam outros pontos contra.
        Que problemas futuros poderíamos ter pelo fato de não termos a UI em código fonte C++?
        Será que a estrutura XML do UI é capaz de representar todas as possibilidades que podemos fazer quando temos um código C++ ?
        É muito comum, mesmo após criarmos a GUI com o Qt Designer, ainda precisarmos fazer alguma codificação manual na GUI, ou seja, nos arquivos C++ que foram gerados pela compilação dos arquivos ui. A pergunta aqui é como isso seria possível se optarmos pelo modo dinâmico de geração de UI? Qt Designer tem tudo que se precisa para trabalhar com GUI?

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

          Não tenho certeza se o QUiLoader faz a conexão slot/signal de forma automática, que seria muito prático.

          1 Reply Last reply
          0
          • E Offline
            E Offline
            Exotic_Devel
            wrote on last edited by
            #5

            Pelo visto, o único contra é o desempenho. O código abaixo responde o restante das minhas perguntas

            @MyWidget::MyWidget(QWidget *parent)
            : QWidget(parent)
            {
            QUiLoader loader;
            QFile file(":/forms/myform.ui");
            file.open(QFile::ReadOnly);
            QWidget *myWidget = loader.load(&file, this);
            file.close();

             QVBoxLayout *layout = new QVBoxLayout;
             layout->addWidget(myWidget);
             setLayout(layout);
            

            }@

            Qualquer alteração ou adição que necessite ser feita na gui pode ser feita através do objeto myWidget que é criado a partir da gui feta no designer. De posse do objeto myWidget podemos ter acesso a todos os componentes que estão na gui. Adicionar ou modificar os mesmos se necessário.

            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