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?
c++
gui
cross-platform
BenjaminB
fonte
fonte
Respostas:
Não é algo que geralmente se aplica às guias, mas o mecanismo de sinal / slot do Qt é uma solução muito boa
Qt e WX fornecem documentos muito bons, referência e tutorial
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.
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
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
fonte
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.
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.
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.
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
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.
fonte
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.
fonte
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?
fonte