Pergunta

Eu sou um # programador C que começou usando ubuntu cerca de 2 anos. Eu estou querendo aprender programação GUI em C ou C ++. Eu realmente não gosto de mono, ele tende a falhar no meu sistema. Eu tenho um conhecimento básico de C ++. Eu nunca trabalhei em C, mas ele parece legal. Qual conjunto de ferramentas que eu deveria aprender / uso? Dê Pro / contras de cada um. Obrigado!

Foi útil?

Solução

Uma vez que C ++ é mais familiar para você, você pode encontrar GTKmm ser um ajuste melhor, já que você pode usar expressões como RAII. Infelizmente, GTKmm é um pouco incompleto e está faltando algumas das partes menos utilizadas de GTK.

GTK + por conta própria, no entanto, essencialmente expõe um modelo de objeto semelhante ao que você encontrar em C ++, mas apenas com funções C. Coisas como a construção e destruição em C ++ são feitas explicitamente na API C e casos de widgets são manipulados através de ponteiros exclusivamente.

Tente ambos e ver qual se encaixa o seu projeto melhor.

Outras dicas

Eu poderia ser acusado de parcialidade desde que ajudam contribuir para gtkmm, mas eu era um usuário em primeiro lugar, então ... Em qualquer caso, eu recomendo gtkmm se você está confortável com C ++. gerenciamento de memória é muito mais fácil com gtkmm do que com GTK + porque os objetos contados de referência são gerenciados automaticamente com ponteiros inteligentes. Você pode objetos também instanciar como variáveis ??de automóveis (por exemplo na pilha) e tem sua vida determinada pela sua abrangência. Assim, na prática, é muito mais fácil para evitar vazamentos de memória com gtkmm do que com GTK +.

Outra enorme vantagem de gtkmm sobre GTK + (na minha opinião) é o uso de um quadro de sinais de tipo seguro. Em GTK +, você constantemente precisa passar as coisas como ponteiros void e depois lançá-los ao redor para o tipo que você acha que eles devem ser. Em gtkmm, você não precisa fazer isso, e pode aproveitar o compilador fazer cumprir tipo de segurança em seus manipuladores de sinal.

Outra grande vantagem sobre C / GTK + é a facilidade de derivar novas classes. Em GTK +, você precisa escrever um monte de código clichê e, basicamente, re-implementar coisas que você obter gratuitamente em C ++ como parte da língua (por exemplo, herança, construtores, destruidores, etc). Isso é mais tedioso e propenso a erros.

greyfade mencionou que gtkmm é incompleta, e ele está certo até certo ponto - gtkmm não cobre absolutamente tudo na API GTK + (embora ele fica muito perto). Mas na prática isso não é um problema porque você sempre pode usar o C / GTK + API diretamente do seu código gtkmm. Esta compatibilidade C é uma enorme vantagem de C ++ sobre algo como C # ou vínculos python onde você não teria alternativas se a ligação não cobrem parte da API.

As únicas verdadeiras razões para escolher GTK + sobre gtkmm (IMO) são de que gtkmm tem uma pequena sobrecarga adicional, uma vez que é um wrapper em cima da biblioteca C (mas este é geralmente apenas uma única chamada de função, que vai ter impacto insignificante), ou se você odeia ou não pode usar C ++.

Se você é um programador C #, por que não dar uma olhada Vala

Eu uso pygtk para a maioria dos meus aplicativos Linux GUI, mas Python era simplesmente demasiado lento para o projeto no qual estou trabalhando agora, então eu estava tentando pegar um dos GTK + e GTKmm. Então eu conheci Vala.

É uma bonita nova linguagem e, portanto, a documentação é bastante limitada no momento, mas eu acho que tem o melhor dos dois mundos:. Sintaxe C # com velocidade C

Como muitos já disseram, Gtkmm lhe fornecer gerenciamento de boa memória, referência objetos contados, etc. Ele faz cair em um departamento, no entanto. Documentação. O conjunto dos sofre projeto Gtkmm dos fenômenos "undocumentation", onde a postados (e republicados em sites 3rd party) documentação é simplesmente uma varredura javadoc dos arquivos de cabeçalho.

Apenas queria que você soubesse que você estaria se metendo. Por exemplo, o enrolado Janela é uma das classes melhor documentados em Gtkmm .

Você já olhou para QT?
É design agradável C ++, multiplataforma e LGPL

Eu acho que a melhor maneira de ir primeiro seria aprender gtkmm! Depois de acabar com as noções básicas de gtkmm, GTK + deve ser bastante simples de aprender (desde que você sabe C e são confortáveis ??com ponteiros).

No caso de você não sabe C, você pode aprender rapidamente através da leitura A Linguagem de Programação C por Dennis Ritchie

Eu recomendo que você aprenda gtkmm primeiro porque ele é projetado especialmente para C ++, que é um pouco semelhante ao C # já que ambos são Orientada a Objetos, então gtkmm será relativamente fácil de aprender primeiro que GTK +.

Depois de gtkmm, você pode passar para GTK +

A maioria das empresas de código aberto usam GTK + em vez de gtkmm, então GTK + é proveitoso para aprender!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top