Frage

Ich bin jetzt mit einer Idee, die Entwicklung eines nackten Knochen Qt / GTK + -ähnlichen Rahmen zu starten, aber ich möchte ein paar Dinge wissen, bevor ich die Schaffung dieses Projekt zu starten:

  • Was die Struktur von GTK + und Qt ist?
  • Muss ich einen Window-Manager entwickeln, meine eigenen Rahmen zu bauen?
  • Einige Ressourcen starten?
War es hilfreich?

Lösung

Das klingt wie eine große Aufgabe, zumindest als Ausgang Projekt.

Nicht sicher, was Sie durch die „Struktur“ von beispielsweise bedeuten, GTK +. Sie können die Hierarchie für GTK + Objekt, das sagt zumindest wie die durchgeführten Objekte (GTK + ist eine objektorientierte API) beziehen sich auf einander. Sie können erraten, wie der Code strukturiert werden kann, aus diesen Informationen.

Und nein, brauchen Sie nicht Ihren eigenen Window-Manager zu schreiben; die Toolkits beschäftigen sich vor allem mit dem, was passiert, innen Fenster, nicht mit dem Fenster-Management selbst. Natürlich können Sie entscheiden, dass Ihre „Plattform“ einen breiteren Anwendungsbereich haben sollte, und eine WM umfassen.

Andere Tipps

einen GUI / Application Framework zu entwickeln, ist ein bedeutendes Unternehmen. Vielleicht möchten Sie auf sehr klar darüber, warum Sie noch einen anderen Rahmen schreiben müssen.

Die beiden Projekte, die Sie erwähnen, sind Open Source. Warum nicht dort anfangen?

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

Ed Sie fragen, was die Struktur von GTK und Qt sind, ob Sie Ihre eigene Witwe Manager (Antwort: nein) schreiben müssen, und wie, um loszulegen. Antworten auf zumindest die ersten beiden sind im Quellcode. Vergessen Sie nicht, große Praktiker in allen Bereichen lernen durch andere zu beobachten. Lesecode ist nicht anders.

Schreiben einen GUI / app Rahmen wäre eine großartige Lernerfahrung sein, aber auch ein ziemlich kleiner app Rahmen eine sehr große Aufgabe, und nicht etwas, das Sie sollten wirklich wäre angehen, bis Sie ziemlich Experte schriftlich Anwendungen mit mehreren anderen Frameworks sind und Toolkit.

Ich habe so etwas wie dies einmal, wieder in den ersten Jahren dieses Jahrzehnts. Das war, nachdem ich seit über 15 Jahren für den Mac programmiert worden war, von Windows über 10, und hatte sowohl direkt in ihre Heimat Grafiken, Veranstaltung programmiert, und Widget APIs, sowie verschiedene objektorientierte Toolkits für sie einschließlich Powerplant, MFC und MacApp. Wenn ich auf einer PalmOS-Anwendung zu arbeiten begann, verbrachte ich ein paar Wochen einen sehr kleinen app Rahmen auf Powerplant modellierte zu schreiben. Aber ich hätte überhaupt nicht ohne diese Jahrzehnte breite und tiefe Erfahrung mit so vielen GUI-Systeme erfolgreich war.

Dadurch für Linux / X11 ist noch mehr Arbeit. Das ist, weil, im Gegensatz zu Mac OS und Windows, weder X11 noch Linux Versorgung integrierte Benutzerschnittstelle Widgets oder viel in der Art von Grafik-Primitiven oder Text-Layout-Funktionen. GTK + ist Teil des GNOME Ökosystem; es stellt die Widgets, bekommt seine Nachrichtenwarteschlange und die interne Kommunikation von GObject, stützt sich auf GDK zu abstrahieren und seine Grafiken und Event-Kommunikation mit X11 vereinfachen und verwendet Pango und Kairo für Text-Rendering und Layout. Ich arbeite alle durch dieses System, und es stellt wahrscheinlich viele Dutzende von Personen-Jahren harter Arbeit von vielen wirklich intelligenten Menschen. Und ich bin sicher, dass Qt sehr ähnlich ist.

Also, wenn Sie das wirklich tun möchte, würde ich empfehlen Ihnen:

  1. Write-Programme mit einem Los von anderen App und Widget-Toolkits, auf mehreren Betriebssystemen. Das wird Ihnen helfen, lernen nicht nur wie solche Systeme funktionieren, aber Warum sie dazu bestimmt sind, wie sie sind. Und es wird Ihnen ein Gefühl für das, was gut funktioniert und was schlecht funktioniert.
  2. Contribute Bug-Fixes oder neue Funktionen zu einem oder mehreren der verschiedenen Open-Source-Frameworks. GTK + hat eine Liste der Aufgaben für Anfänger auf zu arbeiten. Eine weitere große Open-Source-Framework ist WxWidgets .
  3. Werden Sie Experte Ebene C / C ++ Programmierer.

Wenn Sie, dass für ein paar Jahren getan haben, werden Sie das Know-how für haben Ihren eigenen Rahmen Angriff zu nehmen.

Ich denke, einige der Antworten hier vielleicht ein bisschen übertreiben. Offensichtlich macht etwas von der gleichen Qualität, Breite und Tiefe wie Qt und GTK ein riesiges untertaking ist. Aber Sie können einfachere Sachen machen und noch viel darüber zu erfahren, wie es funktioniert. Ich schlage vor, zu tun, wie ich in der Universität war. Verwenden Sie OpenGL mit Glut. Dann bekam man grundlegende Zeichenfunktionen und Ereignissystem bereits vorhanden. Anschließend müssen Sie Klassen für Schaltflächen erstellen, Textfelder, etc.

Wenn Sie es wirklich einfach machen wollen, dann jede Komponente muss nur wissen, wo sie gezogen und haben eine Art von Zeichen-Box, wo Sie überprüfen, ob Mausklick innerhalb oder nicht. Sie braucht auch einige Systeme zu schaffen, die es möglich macht Schaltflächen, Kontrollkästchen usw. den Rest des Codes zu sagen, dass sie angeklickt wurden.

Das ist nicht wirklich die Raketenwissenschaft Menschen hier machen, zu sein. Spiele haben ihren eigenen sehr einfachen GUI-Toolkits für Jahre. Sie können auch diesen Ansatz versuchen. Ich habe vor ein einfaches GUI Toolkit auf einem Game-Engine modelliert. Ihre Tasten und Textfeld könnten einfach Sprites sein.

Aber ja, wenn man etwas machen wollen, die mit Gtk + und Qt, vergessen Sie es konkurrieren. Das ist eine Teamarbeit über viele Jahre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top