Pergunta

Agora estou com uma idéia para iniciar o desenvolvimento de um esqueleto Qt / GTK + -como quadro, mas eu quero saber algumas coisas antes de eu começar a criação deste projeto:

  • O que é a estrutura do GTK + e Qt?
  • que eu preciso para desenvolver um gerenciador de janelas para construir o meu próprio quadro?
  • Alguns recursos para começar?
Foi útil?

Solução

Isso soa como uma grande empresa, pelo menos como um projeto inicial.

Não sei o que você quer dizer com "a estrutura" de exemplo GTK +. Você pode ver o objeto hierarquia para GTK +, que lhe diz, pelo menos como os objetos implementados (GTK + é um API de objecto) se relacionam entre si. Você pode adivinhar como o código pode ser estruturado, a partir dessa informação.

E não, você não precisa escrever seu próprio gerenciador de janelas; os kits de ferramentas, principalmente, se preocupar com o que acontece dentro janelas, não com o gerenciamento de janelas em si. Claro que você poderia decidir que a sua "plataforma" deve ter um escopo mais amplo, e incluem uma WM.

Outras dicas

O desenvolvimento de um framework GUI / Aplicação é um empreendimento significativo. Você pode querer ser muito claro sobre o porquê você precisa escrever ainda um outro quadro.

Ambos os projetos que você menciona são de código aberto. Por que não começar por aí?

  1. GTK: git clone git: //git.gnome.org/gtk+
  2. Qt: git clone git: //gitorious.org/qt/qt.git

Ed Você pergunta o que a estrutura do GTK e Qt são, se você precisa escrever seu próprio gerente de viúva (resposta: não) e como começar. As respostas a, pelo menos, os dois primeiros são no código fonte. Não se esqueça, grandes praticantes em qualquer campo aprendem observando os outros. Leitura de código não é diferente.

Escrevendo um quadro GUI / app seria uma grande experiência de aprendizagem, mas mesmo um quadro aplicativo relativamente pequeno seria um trabalho muito grande, e não algo que você realmente deve enfrentar até que você esteja bastante especialista em escrever aplicações usando vários outros frameworks e Widget toolkits.

Eu fiz algo parecido com isso de uma vez, de volta nos primeiros anos desta década. Isso foi depois de eu ter sido programação para o Mac mais de 15 anos, o Windows mais de 10, e tinha programado tanto diretamente para seus gráficos nativos, eventos e APIs widget, bem como diversos kits de ferramentas orientadas a objetos para eles, incluindo PowerPlant, MFC e MacApp. Quando comecei a trabalhar em um aplicativo PalmOS, passei um par de semanas escrevendo um quadro aplicativo muito pequeno modelado em PowerPlant. Mas eu não poderia ter conseguido nada sem essas décadas de ampla e profunda experiência com tantos sistemas de GUI.

Fazer isso para Linux / X11 é ainda mais trabalho. Isso porque, ao contrário do Mac OS e Windows, nem X11 nem fornecimento de Linux embutido widgets de interface do usuário, ou muito na forma de primitivos gráficos ou recursos de layout de texto. GTK + é parte do ecossistema GNOME; ele fornece os widgets, obtém sua fila de mensagens e comunicações internas de GObject, depende de GDK para abstrair e simplificar os seus gráficos e comunicações de eventos com o X11, e usa Pango e Cairo para processamento de texto e layout. Eu trabalho todo através desse sistema, e provavelmente representa muitas dezenas de pessoas-anos de trabalho duro por um monte de pessoas realmente inteligentes. E tenho certeza que Qt é muito semelhante.

Então, se você realmente quer fazer isso, eu recomendo que você:

  1. programas de escrever com uma muito de aplicativo diferente e toolkit, em vários sistemas operacionais. Isso ajudará você a não aprender apenas como como funcionam os sistemas, mas por que são concebidos como elas são. E ele vai te dar algum sentimento para o que funciona bem eo que funciona mal.
  2. Contribuir correções ou novos recursos a um ou mais dos vários frameworks open-source. GTK + tem uma lista de tarefas para iniciantes para trabalhar em . Outra grande framework open-source é wxWidgets .
  3. Torne-se um nível de peritos C / programador C ++.

Quando você tiver feito isso por alguns anos, você terá o conhecimento adequado para lidar com o seu próprio quadro.

Eu acho que algumas das respostas aqui pode exagerar um pouco. Obviamente fazer algo da mesma qualidade, largura e profundidade como Qt e GTK é uma enorme untertaking. Mas você pode fazer coisas mais simples e ainda aprender muito sobre como ele funciona. Sugiro fazer como eu fiz na universidade. Use OpenGL com Glut. Então você tem a funcionalidade de desenho e sistema de eventos básico no lugar já. Você precisa então de criar classes para os botões, campos de texto etc.

Se você quiser torná-lo realmente simples, então cada componente só precisa saber onde ele é desenhado e ter algum tipo de caixa delimitadora onde verificar se clique do mouse estão dentro ou não. Você também precisa criar algum sistema que torna possível para os botões, caixas de seleção, etc, para dizer ao resto do seu código que eles foram clicados.

Isto não é realmente os Rocket Science pessoas aqui fazem para fora para ser. Jogos têm feito os seus próprios kits de ferramentas GUI muito simples durante anos. Você pode tentar essa abordagem também. Eu ter modelado um tookit GUI simples em cima de um motor de jogo antes. Seus botões e campo de texto poderia ser simplesmente ser sprites.

Mas sim, se você quiser fazer algo que vai competir com Gtk + e Qt, pode esquecer. Isso é um esforço de equipe ao longo de muitos anos.

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