O que se deve procurar ao escolher uma biblioteca C ++ GUI de plataforma cruzada?

8

Como programador de C ++, estou tentando selecionar uma estrutura ou biblioteca de GUI para meus próprios projetos.

Eu tenho alguma experiência com o Qt: é muito direto, possui uma documentação muito boa e fornece muitas ferramentas, mas parece duplicar grande parte da biblioteca padrão.

Todas as bibliotecas C ++ GUI são assim? O que devo procurar em uma biblioteca de GUI? Como determino qual seria o melhor para um determinado problema? Devo me concentrar em uma biblioteca específica ou vale a pena conhecer várias delas, pois elas podem servir a propósitos diferentes?

BenjaminB
fonte
Além disso, para referência: stackoverflow.com/questions/4172398/…
Vitor Py

Respostas:

6

Qt: é muito simples,

Não é algo que geralmente se aplica às guias, mas o mecanismo de sinal / slot do Qt é uma solução muito boa

tem uma documentação muito boa,

Qt e WX fornecem documentos muito bons, referência e tutorial

e fornece muitas ferramentas,

O Qt precisa de ferramentas, outras bibliotecas não exigem nada além do compilador comum - especialmente aquelas que usam layouts de tipo sizer nem precisam de um editor de GUI.

mas parece duplicar grande parte da biblioteca padrão.

Isso é comum simplesmente porque há alguns anos atrás você não podia confiar no std lib e no STL estar presente ou funcional em todas as plataformas. Ainda hoje isso é sempre verdade em plataformas móveis. Muitas vezes, embora você NÃO precise usar as classes de coleção deles, ou você acha que elas são compatíveis com os plugins stl

Como faço para determinar qual seria o melhor caso de um problema específico? "

Geralmente, você precisa de uma guia para solucionar problemas padrão do tipo big app para desktop ou interfaces móvel / web altamente configuráveis. Freqüentemente, o gui lib tem um sabor para ambos, como Qt e QWT

Martin Beckett
fonte
A duplicação da biblioteca padrão acontece muito - incluindo wxWidgets, embora o IIRC exista opções para usar a biblioteca padrão agora. A Microsoft não levou a sério o padrão até provavelmente a versão 2003 do Visual Studio, entre outros problemas.
Steve314
Não pense que estava completamente correto até o VS2008! Faz alguns anos que eu usei o wx, mas no Qt as classes de coleção agora são completamente comutáveis ​​para o stl. Os dois ainda usam sua própria classe de string - mas, considerando o quão pobre é o std :: string, você pode perdoar isso!
Martin Beckett
Eu duvido que esteja completamente correto mesmo agora - a perfeição é pedir demais. O VC ++ 2003 parecia bem para mim, apesar de algumas maldades. Talvez seja uma perspectiva (qualquer coisa melhor que o Visual C ++ 6).
Steve314
@ Steve314 - ficou muito melhor no vc2008 e agora no vc2010. Parece que, ao contratar a equipe C ++ do stutter msft, mudou-se de "funciona para nós" e "adiciona um recurso ao idioma para corrigir esse aplicativo" para tentar ser o melhor compilador C ++.
Martin Beckett
4

Todas as bibliotecas C ++ GUI são assim?

Não tente agrupar tudo em um descritor. Sempre haverá bibliotecas ruins ou mesmo não documentadas. Eles podem reinventar a roda 90% do tempo ou fornecer novas funcionalidades inovadoras.

O que devo procurar em uma biblioteca de GUI?

Você deve procurar uma biblioteca que resolva suas necessidades da maneira mais eficiente possível. Por eficiente, quero dizer uma combinação de código e desempenho. Obviamente, se a biblioteca parecer uma reminiscência de Perl ofuscado, você não gostaria de usá-la para código de produção, mesmo que forneça execução extremamente rápida. Por outro lado, você não quer algo extremamente detalhado, mas com uma velocidade de execução prejudicada.

Como determino qual seria o melhor para um determinado problema?

Nem sempre há uma maneira definitiva de determinar qual é o melhor X para fazer Y . Se você puder encontrar algum tipo de dados não tendenciosos em relação ao seu problema e às soluções oferecidas pelas bibliotecas, é uma maneira. Conhecimento e experiência também estão entre as melhores maneiras de determinar como uma solução atenderá às suas necessidades.

Devo me concentrar em uma biblioteca específica ou vale a pena conhecer várias delas, pois elas podem servir a propósitos diferentes?

Isso depende apenas do que você faz e de quais são suas necessidades. Se você precisar trabalhar no X , precisará aprender a melhor biblioteca para ele. Se você está trabalhando apenas em uma coisa e tem uma biblioteca que se adapta às suas necessidades, por que se preocupar? *

* Nota: nunca é demais saber mais, estou apenas dizendo do ponto de vista puramente "Concluindo o trabalho".


fonte
+1 "concluindo o trabalho". Você poderia passar a vida pesquisando a melhor lib GUI possível para seu projeto em particular e, no final, provavelmente escolheria apenas uma marginalmente melhor (se é que existe) do que escolheria entre um exame superficial dos poucos mais populares. Pessoalmente, conheço wxWidgets suficientes que dificilmente me incomodarei em pesquisar qualquer outra coisa, desde que eu possa controlar qual GUI estou usando - QT ou GTK provavelmente podem ser tratados da mesma maneira, supondo que usá-los no Windows não seja um grande problema. lidar. Estou curioso sobre a biblioteca leve do FLTK.
Steve314
2

Como determino qual seria o melhor para um determinado problema?

Tendo realizado dezenas de portas de GUI e aplicativos de GUI de plataforma cruzada desde 1989, eu encontrei a primeira pergunta que você deve sempre decidir é a aparência . As bibliotecas de GUI de plataforma cruzada são executadas em um espectro dessa maneira.

Aparência e aparência semelhantes em todos os lugares

Isso funciona melhor se o seu software é voltado para pessoas que precisam mudar de plataforma com frequência e desejam que o software se comporte de maneira idêntica em qualquer lugar. Isso é comum em alguns aplicativos científicos, nos quais você pode ser uma pessoa Linux visitando um laboratório Mac ou alguém lhe dá uma tonelada de Windows boxen como parte de uma concessão.

Exemplos dessas bibliotecas seriam Tk e GTK +.

Aparência nativa da plataforma em todos os lugares

Isso é muito melhor para aplicativos comerciais e usuários não técnicos, porque essas pessoas estão muito mais interessadas em uma interface de usuário familiar. Na verdade, é provável que eles se recusem a usar software que não tenha uma aparência nativa.

Exemplos dessas bibliotecas seriam wxWidgets, RealBasic, Cocotron e Qt.


Depois de tomar essa decisão, você poderá começar a examinar o domínio do problema com mais detalhes e determinar qual kit de ferramentas específico será o mais adequado.

Bob Murphy
fonte
Não é possível definir a aparência de uma vez por todas com wxWidgets ou Qt?
benjaminb
Lembro-me de que o wxWidgets é um invólucro em torno do sistema de interface do usuário nativo da plataforma, então acho que não. Eu não tenho certeza sobre Qt. Eles costumavam emular a aparência do widget nativo, para que você pudesse alternar para emular uma plataforma diferente. Mas não tenho certeza do que eles estão fazendo agora. De qualquer forma, minha experiência é principalmente no desenvolvimento para uso comercial por clientes não técnicos, onde uma aparência não-nativa é uma coisa ruim. Por exemplo, sempre que ligo o git gui baseado em Tk, acho um pouco chocante porque, independentemente da plataforma em que estou, parece errado.
Murphy Bob Julphy
Tanto o wx quanto o qt usam widgets nativos ou desenham widgets com aparência nativa, se não existirem, ambos suportam temas, portanto parecem nativos.
Martin Beckett
2

Sob os aspectos técnicos, você deve examinar atentamente o licenciamento. O Qt é gratuito apenas para desenvolvimento não comercial de código aberto. Se você começar a usá-lo em outras áreas, como contrato de trabalho, certifique-se de que você e seu cliente ou empresa possam usá-lo e que os custos sejam aceitáveis ​​para todas as partes envolvidas.

editar: Como Raphael diz que estou errado sobre a licença do Qt. Ainda acho que é uma parte importante do processo de decisão para uma biblioteca de GUI que alguém possa querer usar, para garantir que ele possa fazer isso de maneira legal.

thorsten müller
fonte
A licença foi alterada. Desde que você não modifique a fonte do Qt, você pode usá-lo gratuitamente, mesmo em aplicativos comerciais de código fechado.
Raphael
1

Além do tecnicismo da escolha, outro ponto é a disponibilidade de desenvolvedores com conhecimento da ferramenta escolhida, durante a vida útil do produto. Esse deve ser o principal fator na escolha de todas as ferramentas de desenvolvimento no mundo comercial. Se for apenas para você, faça o que quiser; se não, use as ferramentas que os desenvolvedores conhecem, querem conhecer e são bem conhecidas. É muito mais fácil recrutar um contratado ou funcionário para um aplicativo Java / Swing ou C ++ / QT do que um aplicativo ADA / (preencha seu kit de ferramentas GUI inédito aqui).

O kit de ferramentas que você escolhe é "avançar na carreira" para você e todos os outros, ou seria um passivo em um currículo?

mattnz
fonte
Eu não sou responsável por nada além de mim mesmo. Portanto, é apenas para meus projetos pessoais e meu currículo!
benjaminb