Domanda

Ora ho l'idea di iniziare lo sviluppo di un framework simile a Qt / GTK +, ma voglio sapere alcune cose prima di iniziare la creazione di questo progetto:

  • Qual è la struttura di GTK + e Qt?
  • Devo sviluppare un gestore di finestre per creare il mio framework?
  • Alcune risorse per iniziare?
È stato utile?

Soluzione

Sembra un'impresa importante, almeno come un progetto iniziale.

Non sei sicuro di cosa intendi con "la struttura" di es GTK +. Puoi vedere la gerarchia di oggetti per GTK +, che ti dice almeno come gli oggetti implementati (GTK + è un'API orientata agli oggetti) si relazionano tra loro. Puoi indovinare come può essere strutturato il codice, da quelle informazioni.

E no, non è necessario scrivere il proprio gestore di finestre; i toolkit si occupano principalmente di ciò che accade all'interno di di Windows, non della gestione delle finestre stessa. Ovviamente potresti decidere che la tua "piattaforma" dovrebbe avere un ambito più ampio e includere una WM.

Altri suggerimenti

Lo sviluppo di una GUI / framework applicativo è un'impresa significativa. Potresti voler essere molto chiaro sul perché devi scrivere ancora un altro framework.

Entrambi i progetti citati sono open source. Perché non iniziare lì?

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

Ed Ti chiedi quale sia la struttura di GTK e Qt, se devi scrivere il tuo manager vedova (risposta: no) e come iniziare. Le risposte almeno ai primi due sono nel codice sorgente. Non dimenticare, i grandi praticanti in ogni campo imparano guardando gli altri. La lettura del codice non è diversa.

Scrivere un framework di GUI / app sarebbe una grande esperienza di apprendimento, ma anche un framework di app abbastanza piccolo sarebbe un lavoro molto grande, e non qualcosa che dovresti davvero affrontare fino a quando non sarai abbastanza esperto nella scrittura di applicazioni usando diversi altri framework e widget di strumenti.

Ho fatto una cosa del genere una volta, nei primi anni di questo decennio. Ciò accadeva dopo aver programmato per il Mac per oltre 15 anni, Windows per 10 e aver programmato direttamente le loro API native per la grafica, gli eventi e i widget, nonché vari toolkit orientati agli oggetti per loro, tra cui PowerPlant, MFC e MacApp. Quando ho iniziato a lavorare su un'applicazione PalmOS, ho trascorso un paio di settimane a scrivere un framework di app molto piccolo modellato su PowerPlant. Ma non avrei potuto avere successo senza quei decenni di vasta e profonda esperienza con così tanti sistemi GUI.

Fare questo per Linux / X11 è ancora più lavoro. Questo perché, a differenza di Mac OS e Windows, né X11 né Linux forniscono widget di interfaccia utente incorporati, o molto in termini di primitive grafiche o funzionalità di layout del testo. GTK + fa parte dell'ecosistema GNOME; fornisce i widget, ottiene la coda dei messaggi e le comunicazioni interne da GObject, si affida a GDK per astrarre e semplificare la sua grafica e le comunicazioni degli eventi con X11 e utilizza Pango e Cairo per il rendering e il layout del testo. Lavoro su tutto quel sistema e probabilmente rappresenta molte dozzine di anni di duro lavoro da parte di molte persone davvero intelligenti. E sono sicuro che Qt è molto simile.

Quindi, se vuoi davvero farlo, ti consiglierei:

  1. Scrivi programmi con un lotto di diversi toolkit per app e widget, su più sistemi operativi. Ciò ti aiuterà a imparare non solo come come funzionano tali sistemi, ma perché sono progettati così come sono. E ti darà un'idea di ciò che funziona bene e di ciò che funziona male.
  2. Contribuisci a correggere bug o nuove funzionalità a uno o più dei vari framework open source. GTK + ha un un elenco di attività su cui i principianti possono lavorare . Un altro ottimo framework open source è wxWidgets .
  3. Diventa un programmatore C / C ++ di livello esperto.

Dopo averlo fatto per alcuni anni, avrai le competenze adatte per affrontare il tuo quadro.

Penso che alcune delle risposte qui potrebbero esagerare un po '. Ovviamente realizzare qualcosa della stessa qualità, larghezza e profondità di Qt e Gtk è un grande impegno. Ma puoi fare cose più semplici e imparare ancora molto su come funziona. Suggerisco di fare come ho fatto all'università. Usa OpenGL con Glut. Quindi sono già presenti funzionalità di disegno di base e sistema di eventi. È quindi necessario creare classi per pulsanti, campi di testo ecc.

Se vuoi renderlo davvero semplice, ogni componente deve solo sapere dove è disegnato e avere una sorta di riquadro di delimitazione in cui controlli se il clic del mouse è dentro o meno. È inoltre necessario creare un sistema che consenta a pulsanti, caselle di controllo ecc. Di comunicare al resto del codice che sono stati cliccati.

Questo in realtà non è la scienza missilistica che la gente qui fa finta di essere. I giochi hanno creato i loro strumenti molto semplici GUI per anni. Puoi provare anche questo approccio. In precedenza ho modellato una semplice interfaccia grafica su un motore di gioco. I pulsanti e il campo di testo potrebbero essere semplicemente sprite.

Ma sì, se vuoi creare qualcosa che possa competere con Gtk + e Qt, dimenticalo. Questo è uno sforzo di squadra per molti anni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top