Pergunta

Um monte de pessoas parecem ter uma opinião sobre o que é melhor. Eu realmente não estou pedindo para estas opiniões, o que eu gostaria de saber são os detalhes: Quais são as coisas que fazem uma gráfica kit de ferramentas diferente da outra, e que essas diferenças fazem Qt e Gtk + tem

Foi útil?

Solução

Eu não posso falar diretamente ao Gtk +, mas no meu trabalho anterior eu usei Gtkmm, e no meu trabalho atual eu uso Qt. Ambos são C ++, então, nesse sentido, são consistentes, mas Gtkmm é / era apenas um wrapper para o código Gtk +, que está em linha reta C.

No momento eu mudei de emprego, lembro-me que uma das principais diferenças no código Ui foi como os dois toolkits tratado layouts. Algumas partes eu pensei Gtk fez melhor, alguns Pensei Qt fez melhor. Ambos permitem que você obtenha seus widgets onde quiser, eventualmente.

Depuração com Gtkmm foi um pouco de dor, porque as classes geralmente não fazer nada, exceto espera um ponteiro para um struct e chamar funções GTK +. Esse nível extra de indireção pode ser irritante.

Qt tem um código mais auxiliar que pode ser útil em várias configurações, pelo menos em comparação com a versão do Gtkmm que eu estava usando. Coisas para fazer segmentação, comunicação entre processos, ea criação de redes mais fácil são todos apreciado quando você precisa adicionar uma nova dimensão ao seu programa. Eles também têm os seus contentores, se você quiser usá-los, o que eu acho que tem uma interface mais são do que os contêineres STL -., Mas eles fazem a mesma coisa, no final, por isso é uma ligeira vantagem

O mecanismo de sinal / ranhura entre Gtkmm e Qt é diferente. Qt depende de uma etapa extra no processo de compilação para gerar informações meta, que ele usa para seu sinal / slots. Um objecto utilizando sinais ou ranhuras deve ser herdada de um QObject, e a herança QObject deve ser o primeiro, com nenhuma estrutura diamante. Isso torna difícil definir uma interface abstrata que emite um sinal, por exemplo. No lado positivo, eles são inerentemente ciente dos problemas de rosqueamento, e irá converter o sinal de conexão / slot em uma conexão baseada em eventos quando necessário. Gtkmm utiliza sinais SIGC, que são as classes simples C ++, e me parecem ser úteis em uma ampla variedade de situações. Além disso, somente os objetos que fazem uma necessidade de conexão para herdar da classe base mágica, se bem me lembro. Além disso, uma vez que os slots são objetos, você pode usá-los como muito agradável functor adaptável objetos também.

Eu tenho certeza que existem outras diferenças, mas isso é o que eu me lembro agora. Tenha em mente a minha última experiência com Gtkmm foi cerca de 3 anos, por isso, alguns desses itens pode ter mudado agora.

Outras dicas

Para entender as diferenças, o seu melhor para entender a história.

QT foi desenvolvido como um UI e teve alguns problemas de licenciamento no início quando o KDE começou a ser desenvolvido. KDE escolheu QT como não havia muito de uma seleção naquela época (Motif, Tcl / Tk para citar alguns)

O GIMP estava começando a ser desenvolvido e no momento em que a janela de Toolkits não eram até zero para que os desenvolvedores necessários para que eles começaram a escrever o Gimp Ferramenta Kit (GTK). Depois de algum tempo, decidiu-se re-escrever GTK e torná-lo objeto Orientado (GTK +).

Também nessa época, devido aos potenciais problemas de licenciamento com QT, Gnome foi iniciado e decidiu usar a biblioteca GTK +.

Agora, se você olhar para o QT Projeto e GTK projeto entradas na Wikipedia, você pode começar a ver algumas das diferenças entre os sistemas.

Observe que QT é referido como a:

framework de desenvolvimento de aplicações multi-plataforma

enquanto GTK + é referido como a:

multi-plataforma Widget Toolkit para a criação de interfaces gráficas de usuário.

Se estas entradas são para ser acreditado, então eu acho que é o que nós poderíamos as principais diferenças entre os dois, mas eu diria que é uma linha bastante fina no mundo de hoje.

Em primeiro lugar, você pode usar Gtk + de C. Qt é C ++ somente.

Além disso, aplicativos GTK + tendem a ter diálogos que a mudança persistente, com um botão de fechar. Qt tende a ser ao longo das linhas de Ok / Aplicar / Cancelar. Eu não sei quanto disso é aplicada a nível toolkit, apesar de tudo.

Como para a programação, eu não sei o callback mecanismo usa o GTK, mas mecanismo de Qt sinais de ranhuras absolutamente rochas.

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