Start mit einem GUI in C++

Freddycbv

Komplett-PC-Aufrüster(in)
Liebe Community,

Ich habe vor einem halben Jahr angefangen, in C zu programmieren,
bin jedoch schon bald zu C++ umgestiegen, da es mir mehr Möglichkeiten bietet. (VB und Python haben mir nicht gefallen, waren mir zu einfach, und zu schreibaufwändig)
Jedenfalls konnte ich mir nun schun die Grundlagen aneignen, jedoch wurde mir die Konsolenprogrammierung langsam zu langweilig und umständlich,
da man mit einer Konsolenanwendung schlecht interagieren kann.

Also habe ich mich im Internet ein bisschen ins Thema GUI eingelesen, und habe vor einer knappen Woche mit WinAPI angefangen.
Als ich mir jedoch einige Threads in diesem Forum angeschaut hatte, wurde hier u. A Qt empfohlen,
da es einfacher sei. (muss sagen,dass der Start in die Windows API nicht einfach war, ein einfacher Schnellstart ist mir lieber :D)

Also meine Frage:

Mit welcher GUI würdet ihr an meiner Stelle anfangen??
Soll ich bei WinAPI bleiben, oder neustarten???
Wenn QT, kennt ihr gute deutscheTutorials (bzw. Bücher),
meine Englischkenntnisse sind noch nicht so ausgeprägt(bin in der 8.Klasse)

Schonmal vielen Dank für Antworten,

Freddycbv
 
Ich würde dir zu Qt raten. WinAPI ist schon ordentlich Quälerei :ugly:
Zu deutschen Tutorials kann ich dir leider nichts sagen, da ich meist nur mit englischen Quellen arbeite :(
 
Ahoi,

Ich habe vor einem halben Jahr angefangen, in C zu programmieren, bin jedoch schon bald zu C++ umgestiegen, da es mir mehr Möglichkeiten bietet. (VB und Python haben mir nicht gefallen, waren mir zu einfach, und zu schreibaufwändig)
Ohhhh, ich glaube du hast noch nicht wirklich viel mit C++ gearbeitet. :ugly: Es wird noch lustig wenn du festellst wie dir die anderen Programmiersprachen entgegen kommen und du auf all diesen Luxus in C/C++ verzichten musst. Aber egal, das ist ein anderes Thema.

Also meine Frage:

Mit welcher GUI würdet ihr an meiner Stelle anfangen??
Soll ich bei WinAPI bleiben, oder neustarten???
Wenn QT, kennt ihr gute deutscheTutorials (bzw. Bücher),
meine Englischkenntnisse sind noch nicht so ausgeprägt(bin in der 8.Klasse)
Diese Fragen kann ich eigentlich erstmal nur mit einer Gegenfrage beantworten. Was möchtest du denn genau machen? Wenn es darum geht einige kleinere Tools zu Programmieren oder später mal in den Bereich Anwendungsentwicklung zu gehen, dann ist QT die beste Wahl. Willst du ehr in den Bereich Spiele gehen oder HPC, dann solltest du vielleicht doch erst mal bei WinAPI bleiben, denn auch wenn du sie nachher nicht mehr wirklich verwendest, sie kann ein wirklich ankotzen und die Schlaflosennächte unter den ganzen Handles wird du dein Leben lang nicht mehr vergessen :devil: , brauchst du eine Ahnung davon wie diese genau funktioniert, denn alle Lib setzen auf ihr auf und wenn es um Performance geht, dann musst du da runter und schuften.

Ich hab erst WinAPI, damals noch 16 Bit, und dann MFC bzw QT gemacht. Hat sich gelohnt wie ich finde.

Ach und unbedingt am Englisch arbeiten, sehr wichtig. :daumen:
 
Vielen Dank für deine Antwort,:daumen:

hmm, schwierige Sache...:huh:
Zur Entscheidung habe ich noch ein paar Fragen

-Warum ist Qt besser für Anwendungen, WinApi besser für Games???
Qt soll mehr möglichkeiten bieten und einfacher sein, WinAPI hat
mehr Performance, hab ich das Richtig verstanden?
-Wenn ja, ist WinAPI viel schneller???

Ein guter Grund für qt ist für mich die plattformunabhängigkeit,
hab zwar bisher immer mit Windows gearbeitet, Linux interessiert mich aber schon, also

-Kann man mit WinApi wirklich nicht plattformunabhängig programmieren???

Meine Zielrichtung geht schon zu einem Spiel, vorher hatte ich jedoch vor einige kleinere (aber nützliche) Programme zu programmieren;
allein durch Lektüre kann ich nicht lernen.

Freddycbv
 
Also wenn du Plattformunabhängig sein willst dann QT! WinAPI ist nur für Windows gedacht. ;)

Warum ist die WinAPI besser für Games ist eigentlich ganz einfach zu beschreiben. Jedes Framework, sei es QT, .Net oder was auch immer, um letzt endlich WinAPI calls durchführen und schon alleine aus diesen Punkt ergibt sich das du mit der WinAPI in der Regel schneller bist. Das trifft sicherlich nicht immer für alle Sachen zu und wer weiß was sich MS da noch so alles ausdenkt, aber um Leistung aus Windows herraus zu prügeln (mit kitzeln hat das nichts mehr zu tun :ugly:) musst du wissen was da wie funktioniert.

WinAPI ist nervig und aufwendig, aber in gewisserweise auch sehr lustig.
 
Die WinAPI ist übrigens auch C, Qt C++. Bei Qt gibt es also "echte" Objekte (Fenster inklusive aller Kindelemente), während bei der WInAPI nur irgendwelche Strukturen auf Wanderschaft gehen. Da steckt also auch ein ganz anderes Abstraktionslevel hinter. Und so viel schneller ist die WinAPI jetzt auch wieder nicht. Qt setzt ja auch auf der WinAPI (im Falle von Windows) auf, die können ja auch nur mit dem Arbeiten, was das OS bereit stellt.
 
WinAPI setzt sehr tief in Windows an. Auf Anwendungsebene (v.a. mit C++) ist .NET wohl vorzuziehen. (Warum werden Spiele eigentlich immer mit WinAPI in Verbindung gebracht? Praxisnäher wäre es da, eine existierende Engine an eigene Bedürfnisse anzupassen.) Wichtig ist, dass man sich mit WinAPI auf Windows und mit .NET immer noch auf Microsoft (inklusive Smartphone-Systemen, die ja eigentlich kein Windows sind) festlegt.

Qt ist sehr gut strukturiert, bietet alles, was man so braucht und ist einfach zu lernen. Zudem läuft es wirklich auf jeder relevanten Plattform vom PC (Windows, MacOS und Linux) bis zu Handys (hier leider momentan nur Nokia, wobei ein Android-Port in Mache sein soll).

Geschwindigkeitsunterschiede merkt man durch die gewählte Bibliothek kaum – da hat der Rest des Systems zu viel Einfluss. Absolut dürfte man mit Qt wohl schneller laufende Programme erzeugen können (weil Windows halt langsamer ist als Linux), aber das liegt dann nicht an Qt. Da macht es einen größeren Unterschied, welchen Treiber du für deine Festplatte installierst.
 
Man nutzt bei Spielen eigentlich nur WinAPI um das Fenster zu erzeugen. Der Rest läuft dann über die Grafik-API (DirectX, OpenGL, ...).
 
Naja, dann geb ich auch mal kurz meinen Senf dazu ab, da ich mit QT selbst im Moment arbeiten muss.

Also erstmal ne Sache. Fragile Heart meinte das im HPC Bereich WinAPI eingesetzt würde. Also ich kann mir das bei bestem Willen nicht vorstellen. 1. Wird im HPC Bereich normal nie Windows eingesetzt, womit WinAPI schonmal rausfällt, und dann kommt noch dazu, das es halt nur unter windows läuft, was dort auch ein KO Kriterium ist, da halt die meisten (fast alle) Systeme auf Linux aufsetzen.

Du solltest dir erstmal überlegen, was du machen willst. Daraus ergibt sich eigentlich sehr schnell was du verwenden sollst.

Nimm WinAPI wenn:
1. Deine Benutzer auf Windows Systeme setzen, und dir portabilität egal ist
2. Die User nicht damit gequält werden sollen sich QT zu installieren (überfordert den normalen Windows user)

Nimm QT wenn:
1. Deine Benutzer auch Linux einsetzen, bzw nur Linux
2. Du deinen Usern zutraust QT zu installieren (ist gegeben, wenn sie Linux nutzen)
3. ODER deine User Windows nutzen, du aber eine Anwendung schreibst die einen ganz speziellen (wissenschaftlichen) Einsatzzweck besitzt und du daher den Umstand in kauf nehmen kannst was extra zu installieren.
 
dafür gibts nen SDK? :ugly:

Ich programmier das nur mit den ganz stink normalen QTMethoden in C++ halt.

Was btw ziemlich eklig ist, wenn mans mit MPI zusammen einsetzt :wall:
 
dafür gibts nen SDK? :ugly:

Ich programmier das nur mit den ganz stink normalen QTMethoden in C++ halt.

Was btw ziemlich eklig ist, wenn mans mit MPI zusammen einsetzt :wall:
Japp, sogar mit ner IDE (Qt Creator) mit der man auch Forms designen kann ;)
Download unter qt.nokia.com (gibt's aber auch im Repository der meisten Linux-Distributionen)
 
So wies aussieht, kennst du dich mit QT aus. Hätte an dich daher mal ne Frage.

Ich hab ein MPI Programm, das die Wärmeverteilung auf einer Platte berechnet. Wie kann ich denn dafür Sorgen, das QT die Daten in nem Array ausgibt, sobald es fertig berechnet ist? Und wie kann ich den QT Prozess mit den MPI Prozessen syncronisieren?
 
Fragile Heart meinte das im HPC Bereich WinAPI eingesetzt würde. Also ich kann mir das bei bestem Willen nicht vorstellen. 1. Wird im HPC Bereich normal nie Windows eingesetzt, womit WinAPI schonmal rausfällt, und dann kommt noch dazu, das es halt nur unter windows läuft, was dort auch ein KO Kriterium ist, da halt die meisten (fast alle) Systeme auf Linux aufsetzen.
Naja, muss ich vielleicht etwas relativieren. Wir arbeiten hier an Software für kleine "Super Computer" wie mein Chef das immer bezeichnet. Die setzen halt alle auf Windows. ;)

Was die Leistungsunterschiede angeht, so ist der Unterschied von QT zu WinAPI nicht so groß, aber von .Net zu WinAPI riesig.
 
Naja, was heist "kleine" Supercomputer? Supermicro Maschinen? Cluster bis welcher Größe? Welches Verbindungsnetz setzt ihr ein?

Und was für Software schreibt ihr? Hätte da eventuell dann die eine oder andere Frage an dich ;)
 
Zurück