Anfang mit GUI
-
Hallo leute,
ich wollte bald mit ordentlicher GUI-Programmierung anfangen, da ich die Grundlagen von C++, denke ich, einigermaßen draufhabe. Ich habe mir die GUI-Programmierung auch schon etwas angeschaut und bin etwas verwirrt. Muss ich jeden einzelnen Button und Editfeld etc. selbstständig programmieren, mit der WinAPI ist das nämlich so. Benutze ich hingegen VC++, so kann ich mit Win Form Anwendungen das ganz einfach handhaben. Aber viele sagen, dass sie WxWidgets und Qt verwenden, wo ich mich noch überhaupt nicht auskenne, aber für mich sehen die beiden nach einer weiterführenden WinAPI aus, was bedeutet, dass ich auch hier alles eigenständig programmieren muss und nicht wie bei VC++ einfach Buttons zum Beispiel mit einem Klick erstellen kann.
Meine Frage ist, warum es überhaupt noch anders gemacht wird als mit VC++, das dauert doch sonst immer ewig bis man Buttons und sowas an der richtigen situation platziert und richtiger größe etc. Hat man nachteile, wenn man VC++ mit (.NET ist das doch oder?) verwendet als mit z.B. wxwidgets?euer,
abitious
-
Was ist VC++??? Meinst du Managed C++? Das ist kein C++ und das verwendet kein Mensch, außer für native-managed Bridges und sicher nicht für GUIs. Normale C++ GUI Programmierung mit Visual Studio wäre MFC. Unglaublich hässlich, finde ich. Qt hat eine sehr schöne und mächtige API. Und das ist plattformübergreifend. WxWidgets auch, aber das kenn ich nicht so gut. Das sind einfach Bibliotheken, die aus unterschiedlichen Welten kommen und aus unterschiedlichen Anforderungen heraus entstanden sind. Viele Konzepte sind aber ähnlich, wenn du eine der Technologien gut kannst, wirst du die anderen viel schneller lernen können.
-
Ich meine damit Visual C++, also Visual Studio. Ja mich interessiert nur, wie z.B ein Button bei Qt erstellt wird, hat man da auch so ne Toolbox, mit der ich mir das Interface zusammenbasteln kann oder muss alles "von Hand" programmiert werden und wie sieht das bei wxwidgets aus?
-
Mir ist schon klar, was du mit VC++ meinst. Ich wollte nur darauf hinaus, dass es dir nicht klar ist
Wenn du .NET machst, mach C#. Wenn du C++ machst, mach richtiges C++. Managed C++ ist kein C++.
Für Qt gibts einen QtDesigner und es gibt eine IDE, Qt Creator. Für WxWidgets gibt es natürlich auch grafische Designer, mehrere sogar. Du solltest nicht Konzepte und konkrete Umsetzungen durcheinander bringen. Ob man eine GUI zusammenklickt oder "ausprogrammiert" ist in jedem größeren Projekt völlig nebensächlich, und außerdem kannst du davon ausgehen, dass es mittlerweile für jede GUI Technologie auch entsprechende RAD Tools gibt.
-
Um es noch etwas konkreter zu sagen: Es gibt grob unterteilt ungefähr 4 Möglichkeiten
unter VisualStudio C++ zu verwenden.ATL, CLR, Win32 und MFC
CLR basiert auf .NET-Framework und erstellt Windows-Forms Anwendungen.
Das .NET dient als Interpreter für CIL-Bytecode (Common Intermediate Language),
sodas mit unterschiedlichen Programmiersprachen auf verschiedenen Plattformen
Applikationen entwickelt und ausgeführt werden können.
Das nennt man dann managed Code ...Win32 und MFC verwenden hingegen direkt die Win32-API und sind somit näher an der Hardware
dran. Die Erstellung von grafischen Oberflächen wird mit Toolboxen und Assistenten unterstützt.Die beiden Varianten CLR und Win32 unterscheiden sich in der Syntax deutlich voneinander.
Wenn man nur die Expressversion von Visual-Studio hat, werden aktuell keine MFC-Applikationen unterstützt.
-
Was würdet ihr mir empfehlen, wenn es richtung C++ und GUI gehen soll? Ich hab mir das mit der WinAPI schon angeschaut und bisschen beigebracht, sodass ich das grundlegende Konzept bisschen drauf habe. Ich habe hier ein Buch über wxWidgets rumliegen, wäre dies ein guter Einstieg?
-
Ich arbeite hauptsächlich mit Qt und finde das sehr gut. Ist auch plattformübergreifend und kann einiges mehr als nur GUI.
-
Wenn Dich nur die Windows-Plattform interessiert, empfehle ich Win32++:
http://win32-framework.sourceforge.netDas ist ein Headeronly-Framework, bei dem man viel darüber lernen kann, wie man die C basierte WinAPI in Klassen verpacken kann - wenn man sich die Tutorials ansieht, ist es ziemlich schnell zu verstehen und zu benutzen.
Wenn man sich seine GUI zusammenklicken will, nimmt man parallel dazu einen frei verfügbaren Ressourceneditor, wie zum Beispiel http://www.resedit.net/
-
Ambitious_One schrieb:
Was würdet ihr mir empfehlen, wenn es richtung C++ und GUI gehen soll?
C#
-
QT.
-
dot schrieb:
Ambitious_One schrieb:
Was würdet ihr mir empfehlen, wenn es richtung C++ und GUI gehen soll?
C#
Was hat C# mit C++ zu tun? Nichts...
-
Ambitious_One schrieb:
Was würdet ihr mir empfehlen, wenn es richtung C++ und GUI gehen soll?
Kommt darauf an... ich sehe die MFC immernoch gut im Spiel, besonders wenn es komplexere UIs geht die nicht zu 99% aus Dialogen bestehen.
Ich lese hier immer UI und die meisten meinen: Dialog...
-
Martin Richter schrieb:
dot schrieb:
Ambitious_One schrieb:
Was würdet ihr mir empfehlen, wenn es richtung C++ und GUI gehen soll?
C#
Was hat C# mit C++ zu tun? Nichts...
Exakt. Er will komplexe GUIs für Windows bauen. Also lautet meine Empfehlung C# und eben nicht C++
-
dot schrieb:
Martin Richter schrieb:
dot schrieb:
Ambitious_One schrieb:
Was würdet ihr mir empfehlen, wenn es richtung C++ und GUI gehen soll?
C#
Was hat C# mit C++ zu tun? Nichts...
Exakt. Er will komplexe GUIs für Windows bauen. Also lautet meine Empfehlung C# und eben nicht C++
In der Zeit, in der er seinen managed-native Code verbindet, kann er auch gleich den minimal höheren Arbeitsaufwand von QT in Kauf nehmen. QT ist eh so eine simple API, total straight-forward damit etwas zu machen. Und hey, damit ist sein Code recht portabel und kann auf unzähligen Plattformen laufen, während C# da eine totale Sackgasse ist.
-
Ethon schrieb:
In der Zeit, in der er seinen managed-native Code verbindet, kann er auch gleich den minimal höheren Arbeitsaufwand von QT in Kauf nehmen.
Wo steht denn was von native Code den er einbinden muss?
Ethon schrieb:
QT ist eh so eine simple API, total straight-forward damit etwas zu machen. Und hey, damit ist sein Code recht portabel und kann auf unzähligen Plattformen laufen, während C# da eine totale Sackgasse ist.
Das stimmt bedingt. Abgesehen von WPF lauft angeblich so ziemlich alles auch unter Linux ganz brauchbar, hab ich mir zumindest mal sagen lassen...
-
Na, ich dachte er programmiert C++? Dann wird doch irgendein C++-Code existieren auf dem sein GUI aufsetzt?
Sonst empfehle ich jetzt Python + PySide.Das stimmt bedingt. Abgesehen von WPF lauft angeblich so ziemlich alles auch unter Linux ganz brauchbar, hab ich mir zumindest mal sagen lassen...
Stimmt, hatte in Erinnerung dass QT überall läuft, ist aber doch *nur* Win, Linux, Mac und Symbian. Bis auf Symbian hat man garantiert auch Mono.
-
Und wer will unter Linux Mono benutzen? Das machen nur Leute, die aus der Windows Welt kommen und ums Verrecken versuchen, ihre selbstgebastelten Programme auch unter Linux zum Laufen bekommen. Keiner, der ernsthaft mit Linux arbeitet, will Mono sehen.
-
Nun ist sehr oft QT gefallen, könntet ihr mir vielleicht auch ein gutes Werk(BUCH) empfehlen, mit dem man QT lernen kann?