Alle meine C ++ - Programme haben bisher die Befehlszeilenschnittstelle verwendet und die einzige andere Sprache, mit der ich Erfahrung habe, ist PHP, das keine GUIs unterstützt.
Wo fange ich mit der grafischen Programmierung der Benutzeroberfläche in C ++ an? Wie erstelle ich eine?
c++
user-interface
waiwai933
quelle
quelle
Antworten:
Im Wesentlichen macht das Fenstersystem eines Betriebssystems einige API-Aufrufe verfügbar, die Sie ausführen können, um Aufgaben wie das Erstellen eines Fensters oder das Einfügen einer Schaltfläche in das Fenster auszuführen. Grundsätzlich erhalten Sie eine Reihe von Header-Dateien und können Funktionen in diesen importierten Bibliotheken aufrufen, genau wie Sie es mit stdlib und tun würden
printf
.Jedes Betriebssystem verfügt über ein eigenes GUI-Toolkit, eine Reihe von Header-Dateien und API-Aufrufen sowie eine eigene Vorgehensweise. Es gibt auch plattformübergreifende Toolkits wie GTK , Qt und wxWidgets , mit denen Sie Programme erstellen können, die überall funktionieren. Sie erreichen dies, indem sie auf jeder Plattform dieselben API-Aufrufe haben, jedoch eine andere Implementierung für die API-Funktionen, die die nativen API-Aufrufe des Betriebssystems aufrufen.
Eine Sache, die sie alle gemeinsam haben und die sich von einem CLI-Programm unterscheidet, ist eine sogenannte Ereignisschleife. Die Grundidee dort ist etwas kompliziert und schwer zu komprimieren, aber im Wesentlichen bedeutet dies, dass in Ihrer Hauptklasse / Hauptfunktion nicht viel los ist, außer:
Es gibt viele Ressourcen zur ereignisbasierten Programmierung. Wenn Sie Erfahrung mit JavaScript haben, ist dies dieselbe Grundidee, außer dass Sie als Scripter keinen Zugriff oder keine Kontrolle über die Ereignisschleife selbst haben oder welche Ereignisse vorhanden sind. Ihre einzige Aufgabe besteht darin, Handler zu schreiben und zu registrieren.
Sie sollten bedenken, dass die GUI-Programmierung im Allgemeinen unglaublich kompliziert und schwierig ist. Wenn Sie die Option haben, ist es tatsächlich viel einfacher, einfach einen eingebetteten Webserver in Ihr Programm zu integrieren und über eine HTML / webbasierte Oberfläche zu verfügen. Die einzige Ausnahme, auf die ich gestoßen bin, sind Apples Cocoa + Xcode + Interface Builder + Tutorials, die es für Benutzer, die noch keine Erfahrung mit GUI-Programmierung haben, leicht zugänglich machen.
quelle
Es gibt viele kostenlose tragbare GUI-Bibliotheken mit jeweils eigenen Stärken und Schwächen:
Besonders Qt hat nette Tutorials und Tools, die Ihnen den Einstieg erleichtern. Genießen!
Beachten Sie jedoch, dass Sie plattformspezifische Funktionen wie die Win32-API oder MFC vermeiden sollten . Das bindet Sie unnötig an eine bestimmte Plattform ohne Vorteile.
quelle
Betriebssystemunabhängiger Algorithmus " Erstellen von GUI-Anwendungen in C ++ in drei Schritten ":
Installieren Sie Qt Creator
Neues Projekt erstellen (Qt Widgets Application)
Baue es.
Herzlichen Glückwunsch, Sie haben Ihre erste GUI in C ++.
Jetzt können Sie eine Menge Dokumentation lesen , um etwas Komplizierteres als die GUI-Anwendung "Hello World" zu erstellen.
quelle
Angesichts des Kommentars "Sagen Sie Windows XP als Beispiel" haben Sie folgende Möglichkeiten:
Interagieren Sie direkt mit dem Betriebssystem über seine API, die für Microsoft Windows überraschend überraschend ist. Rufen Sie die Windows-API auf . Die endgültige Referenz für die WinAPI ist die MSDN-Website von Microsoft . Ein beliebtes Online-Tutorial für Anfänger ist das Win32 API-Programmier-Tutorial von theForger . Das klassische Buch dafür ist Charles Petzolds Programmierfenster, 5. Auflage .
Verwenden Sie eine plattformspezifische Bibliothek (sowohl in Bezug auf das Betriebssystem als auch in Bezug auf den Compiler) wie MFC , die die WinAPI in eine C ++ - Klasse einbindet. Die Referenz dafür ist wieder MSDN. Ein klassisches Buch dafür ist Jeff Prosises Programming Windows with MFC, 2nd Edition . Wenn Sie beispielsweise CodeGear C ++ Builder verwenden, ist die Option hier VCL .
Verwenden Sie eine plattformübergreifende Bibliothek wie GTK + (C ++ - Wrapper: gtkmm ), Qt , wxWidgets oder FLTKdas umschließt die API des spezifischen Betriebssystems. Die Vorteile dabei sind, dass Ihr Programm im Allgemeinen für verschiedene Betriebssysteme kompiliert werden kann, ohne dass die Quellcodes geändert werden müssen. Wie bereits erwähnt, haben sie jeweils ihre eigenen Stärken und Schwächen. Eine Überlegung bei der Auswahl der zu verwendenden ist die Lizenz. Für die angegebenen Beispiele ist GTK + & gtkmm eine Lizenz unter LGPL, Qt unter verschiedenen Lizenzen, einschließlich einer proprietären Option, wxWidgets unter seiner eigenen wxWindows-Lizenz (mit einer Umbenennung in wxWidgets-Lizenz) und FLTK unter LGPL mit Ausnahme. Einzelheiten, Anleitungen und / oder Bücher finden Sie auf der jeweiligen Website.
quelle
Da ich schon dort war, wo du gerade bist, denke ich, dass ich dir "antworten" kann.
Tatsache ist, dass es keine einfache Möglichkeit gibt, eine GUI zu erstellen. GUIs hängen stark von plattform- und betriebssystemspezifischem Code ab. Aus diesem Grund sollten Sie die Dokumentation Ihrer Zielplattform / Ihres Betriebssystems zu Fensterverwaltungs-APIs lesen. Das Gute ist: Es gibt viele Bibliotheken, die diese Einschränkungen und abstrakten Architekturunterschiede in einer einzigen Multi-Plattform-API behandeln. Die zuvor vorgeschlagenen GTK und Qt sind einige dieser Bibliotheken.
Aber auch diese sind etwas zu kompliziert, da viele neue Konzepte, Datentypen, Namespaces und Klassen gleichzeitig eingeführt werden. Aus diesem Grund werden sie mit einem GUI WYSIWYG-Editor geliefert. Sie ermöglichen so ziemlich Programmiersoftware mit GUIs.
Zusammenfassend gibt es auch nicht freie "Umgebungen" für die GUI-Entwicklung wie Visual Studio von Microsoft. Für Personen mit Delphi- Erfahrung ist Visual Studio möglicherweise vertrauter. Es gibt auch kostenlose Alternativen zur vollständigen Visual Studio-Umgebung von Microsoft: Visual Studio Express , das mehr als genug ist, um mit der GUI-Entwicklung zu beginnen.
quelle
Ich habe eine Website mit einem "einfachen" Tutorial gefunden: http://www.winprog.org/tutorial/start.html
quelle
Es ist einfach, eine .NET Windows-Benutzeroberfläche in C ++ zu erstellen.
Siehe das folgende Tutorial von MSDN . Sie können alles, was Sie brauchen (Visual C ++ Express), kostenlos herunterladen .
Natürlich binden Sie sich an .NET, aber wenn Sie nur herumspielen oder nur eine Windows-Anwendung benötigen, ist alles in Ordnung (die meisten Leute haben noch Windows ... für jetzt).
quelle
Ich benutze FLTK, weil Qt nicht kostenlos ist. Ich wähle nicht wxWidgets , weil mein erster Test mit einem einfachen Hallo, Welt! Programm produziert eine ausführbare Datei von 24 MB, FLTK 0,8 MB ...
quelle