UI dinâmico vs estático



  • 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?



  • 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?



  • 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?



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



  • 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.


Log in to reply
 

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