[C++] und GUI - Womit und wie und wie den Einstieg meistern - Anfänger

Noeden

Erfahrenes Mitglied
Hallo alle miteinander,

ich habe es tatsächlich mit der Suchfunktion versucht bin aber nicht wirklich fündig geworden und nach ca. 10 Beiträgen ist die Faulheit durchgekommen, ich bitte um Nachsicht, heute ist der erste Tag an dem ich Programmiere und mein Tag war etwas anstrengend ;)

Also was ich will: Ein Programm mit grafischer Oberfläche programmieren
Womit: Mit OpenSource unter Linux
Was kann ich: Hatte in der Schule bisschen QBasic und heute habe ich in C und C++ reingeschnuppert.

Ist C++ die richtige Wahl, wenn ich vielleicht auch ein wenig mit Linux rumspielen will, sollte ich mir tatsächlich Programmierfähigkeiten aneigenen ;).
Ist Eclipse eine angemessene Wahl für einen Einsteiger?
Wie programmiert man GUI? Mein gefährliches Halbwissen: Zum Beispiel Gnome wurde mit gtk programmiert und in C eingebettet? Wahrscheinlich nicht ganz so richtig :-D

Also wie hätte ich mir das später vorzustellen? Kann ich erstmal C++ durch tutorials lernen und dabei immer mal wieder was in mein Programm schreiben, wenn ich denke das wäre dafür doch geeignet und ich schreibe das erst nur Textbasiert und bau dann nacher ne GUI drum? Oder baue ich erst die GUI und schreibe das darein? Womit programmiere ich die GUI? (Sprache/Programm) geht das mit C++? Ist das empfehlenswert?

Wichtig ist noch, sollte ich wider Erwarten schaffen das Programm so fertigzustellen wie ich mir das vorstelle, dass ich das dann eventuell verkaufen möchte (Jaja Wunschdenken ;)). Also, falls mir eine Entwicklungsumgebung empfohlen wird, bitte keine, bei der man das Ergebnis nicht komemrziell nutzen darf ohne eine Lizenzgebühr zu entrichten. (Falls es sowas gibt)


Danke schonmal ;)

PS: Sehr coole Seite

PPS: Empfehlt ihr mir bestimmte Tutorials oder Bücher(Ist ja bald Weihnachten)
 
Willkommen bei tutorils.de :)

Nichts für ungut, aber der erste "C-Tag" und sofort eine GUI - das passt nicht zusammen.
Scheitern garantiert.

Lern zuerst einmal mit Konsolenprogrammen die Grundlagen der Sprache, auch wenns vllt. länger dauert.
Sonst wirst du nur herumprobieren; und wenn es irgendwann sogar funktioniert verstehst du deinen eigenen Code nicht.

Womit programmiere ich die GUI? (Sprache/Programm) geht das mit C++? Ist das empfehlenswert?

Empfehlenswert...warum nicht? Wenn du eine GUI brauchst, wirst du sie wohl programmieren müssen und nicht deshalb die Sprache wechseln :)

Zum Programmieren gibts einerseits grundlegene Funktionen, die vom Betriebssystem bereitgestellt werden.

Programmieren kannst du damit alles, jedoch langwierig.

Andererseits gibts viele GUI-Librarys, die einem komfortablere Funktionen und/oder einen grafischen Editor zum "Zusammenklicken" geben.
Bekannte Vertreter sind zB QT und wxwidgets.

Gruß
 
Danke schonmal :)

Ist für einen Neuling alles noch sehr verwirrend. Aber Du hast mich falsch verstanden, ich will auch erst C++ lernen. Aber ich hätte gerne schonmal einen Plan. Also ist QT nur eine Sammlung von C-Librarys? Bin davon ausgegangen das wäre eine eigene Sprache. Lassen sie sich auch in C++ verwenden? Und wie sieht es mit gtk aus (wahrscheinlich auch ;)). Denn warum soll ich das Rad neu erfinden?

Und kann ich jetzt zuerst mein Programm versuchen für die Konsole zu schreiben und dann nacher eine grafische Oberfläche drumzubasteln oder macht man es andersrum, sodass ich jetzt nur lerne, dann lerne eine grafische Oberfläche zu programmieren und dann mein Programm dort hereinschreibe?

Danke für die Hilfe!
 
Zum Unterschied von C und C++:
C++ ist schlicht und einfach eine Erweiterung von C
Anders gesagt hat C++ das komplette C unverändert übernommen und hat zusätzlich noch ein paar neue Sachen dabei.

Aus dem Grund ist jedes C-Programm auch ein C++-Programm, das die neu dazugekommenen Sachen eben einfach nicht verwendet
Und jede pure C-Library kannst du auch mit einem C++-Programm verwenden.

Zu dem Rad nicht neu erfinden: Genau. Gerade deswegen gibts ja sowas wie Librarys, die man zu seinem Programm dazubinden kann.

Zu Konsole/GUI: Fang unbedingt mit der Konsole an. Ist einfacher.
Sämtliche GUI-Libs, die ich kenne, setzen die Grundlagen der Sprache schon voraus, weil man sonst damit nichts anfangen kann.
Ebenso die (primitiveren) Möglichkeiten vom Betriebssystem aus.

Solange du dich mit Pointern, Klassen etc nicht auskennst, bleib in der Konsole.

Gruß
 
Danke für die ausführliche Auskunft :) Ich beginne es alles zu begreifen ;).

Zu meiner Frage:
Ich bitte um Geduld, aber das ist nicht genau das was ich wissen wollte. Mir ist schon klar, dass ich das erst in der Konsole lernen soll/muss und das will ich auch.

Nur ich habe ein Projekt, dass im Endeffekt grafisch sein soll. Kann ich jetzt, während ich das in der Konsole lerne, auch schon das Programm schreiben, nur ohne grafische Oberfläche und später dem fertigen Programm einfach, wenn ich anfange mich mit GUIs zu befassen, eine solche dazuprogrammieren oder wäre es einfacher nur in der Konsole zu lernen, dann mich mit GUIs zu befassen, dann eine GUI für das Programm zu schreiben und erst danach in die GUI das Programm reinzuprogrammieren. Ich hoffe meine Frage ist verständlich :-D

Nochmal skizziert:

Programmprojekt
|
Programm (Konsole)
|
GUI dafür schreiben


oder ist es einfacher:

Programmprojekt
|
GUI entwerfen
|
Programm in die GUI reinschreiben




DAnke :)
 
Hi,

also wenn du dein Programm modular genug aufbaust und dir die Klassen gut überlegst, dann kannst du
auch schon eine GUI von vorneherein einplanen. Wie "einfach" du die Gui dann hinzufügen kannst, hängt dann ganz von deinem Programm und deiner Implementierung ab. Wenn du dich an das MVC Design (Model-View-Controller) hälst und die ganzen Ebenen (GUI, Logik) gut voneinander trennst dann sollte es aber gehen.

Gruß
Der Wolf
 
Dennoch würde ich dir absolut davon abraten, jetzt schon mit GUIs zu beginnen. Wichtig ist erstmal, die Sprache an sich zu lernen. Dafür 2 Empfehlungen: "Die C++ Programmiersprache" und den "C++ Primer". Beides sind wohl die Standardwerke für C++.
Danach (und das wird einige Zeit dauern), kannst du dich an GUIs machen (dies ist an sich keine große Sache, es wird ja letzendlich nur eine Funktionalität durch ein Framework bereitgestellt, du musst nur wissen, wie man es benutzt, wie verschiedene Dinge heißen etc. pp., allerdings bringt es dir nichts, wenn du weißt, dass eine Klasse QWidget heißt, ohne Ahnung von OOP und von der Grammatik von C++ zu haben).

Danach kannst du dir dann überlegen, ob du vll. für verschiedene Plattformen programmieren willst etc. Wenn du dann auch eine Empfehlung für ein Buch haben willst, kannst du ja nochmal fragen ;)


Gruß,

badday
 
@Wolf: Jemand, der noch nichtmal mit printf was anfangen wann, wird mit Klassen und dem MVC-Pattern ein wenig überfordert sein :D

@Noeden: Ja, dass du später einfach ein Programm um eine GUI erweiterst, ist recht gut möglich.

Das "recht gut" setzt aber zumindest Wissen über Funktionen/besser Klassen voraus.
Ohne dem wäre es ziemlich langwierig; und wenn man zuerst eine mögliche GUI noch nicht eingeplant hat kann es dann auch manchmal nahezu unmöglich sein, ohne das Programm komplett neu zu schreiben.

Stells dir als eine Möglichkeit vor, das Programm in mehrere voneinander unabhängige Teile aufzusplitten.
zB einen für das, was das Programm eigentlich tut, und einen für die Ein-/Ausgabe
Wenn das Hauptproramm was ausgeben will, kümmert es nicht um Konsole/GUI und gibts einfach dem Ausgabeteil. Der gibts dann wirklich entsprechend aus.

Wenn man das konsequent im ganzen Programm macht und wirklich nur der Ausgabeteil irgendwas zum Ausgeben am Bildschirm drinstehen hat, brauchst du dann bei einem Wechsel zur GUI nur den Ausgabeteil ändern.
Im Hauptprogramm änderst du keinen einzigen Buchstaben.

Vor allem bei größeren Programmen ist das eine gewaltige Arbeitserleichterung
Du musst nur an einer Stelle ändern, wie man etwas ausgibt, statt das komplette Programm nach Ausgaben zu durchsuchen und jede davon einzeln ändern zu müssen.

Ich hoffe, diesmal bin ich nicht an der Frage vorbei :)

Gruß
 
Also, erstmal danke an Euch, bin gerade aus dem WE zurück, jaja die Studenten ;)

Ja also kann ich ruhig das Programm schon schreiben, das mit der Klasse für die Ausgabe ist ja nicht so schwer :) DAmit habe ich dann auch den Hinweis den ich brauchte und das nicht zu spät :) SUPER ;) :-D

Und die eine Klasse zu ändern ist dann überschaubar, habe ich verstanden :) Dann kann ich guten gewissens weitermachen. DANKE!
 
Zurück