C++ GUI-Programmierung, welche Bibliothek?

  • Ersteller Ersteller Schmauch.
  • Erstellt am Erstellt am
S

Schmauch.

Gast
Hallo,

ich werde bald ein größeres C++ Projekt in angriff nehmen, bei dem ich um die Erstellung eines GUI nicht herum komme. Nur fällt es mir schwer herauszufinden, welche Bibliothek sich am besten dafür eignet.

Zumal sich mir die Unterschiede nicht ganz erschließen. Ich habe darüber nachgedacht MFC, Qt oder Windows-Forms zu verwenden. Qt scheint dabei die meiste Lektüre und andere Hilfestellungen zu bieten, und auf allen Betriebssystemen zu laufen (wenn ich das richtig verstanden habe). MFC wäre dann nur für Windows und Windows Forms unter .NET?
Unter .NET habe ich leider auch noch nie programmiert und das Programm muss nur unter Windows laufen.

Ich blicke nicht durch. Kann jemand bitte die Sache für mich entwirren und mir vielleicht sagen welche Bibliothek Ihr mir empfehlen würdet?

Danke schonmal.
 
Zuletzt bearbeitet:
Was du gesagt hast ist soweit richtig, ich würde dir dringend empfehlen Qt zu verwenden, es ist Plattform unabhängig und ausgezeichnet dokumentiert. MFC ist etwas in die Jahre gekommen, es gibt zwar noch jedemenge Legacy Kram der verwendet wird aber die Technologie ist überholt. .NET ist eine ausgezeichnete Plattform, mit Mono ist es sogar auch Plattform unabhängig allerdings hat sich über die Jahre die Kombi C++ und .NET nie durchgesetzt.

Verwende Qt :)
 
Für C++ würde ich zu Qt tendieren.
 
Würde eigentlich eher Gtkmm empfehlen: http://www.gtkmm.org/de/
Ist aber vllt. auch Geschmackssache, ich mag den Aspekt nicht, dass Qt nicht wirklich reines C++ ist und mit diesem Zwischencode rumpfuscht. Mir gefällt auch das Interface von Gtkmm mehr, wirkt auf mich "cleaner" und aufgeräumter. Zusätzlich sind die Qt Oberflächen nicht wirklich nativ, aber manche sehen das als Vorteil, anderen gefällt das nicht.
 
Zuletzt bearbeitet:
Du kannst nehmen was du willst, ist alles eigentlich mehr oder weniger Geschmackssache und jeder hat da so seinen Liebling.
Ich würde dir VLC oder Firemonkey empfehlen (Embarcadero).
 
Ich programmieren berufsbedingt beides und würde unbedingt Qt empfehlen - selbst wenn die Software nur auf Windows laufen soll. Allein die Menge an Beispielen/Doku/stackoverflow-Hilfen ist ein Witz bei anderen Frakeworks gegen Qt.
Selbst wenn du dich für ein anderes Gui Framework entscheidest sollte man imho bei neuen Projekten genau so wie über boost auch über Qt (zumindest QtCore) nachdenken, da es einfach unglaublich viel bietet und C++ zu einer komfortablen Sprache erweitert.
Schwierig ist nur sich zu entscheiden, ob man QtWidget wählt oder QML. QML ist neuer und noch stärker CrossPlattform weil auch automatisch iOs, Android und WindowsPhone unterstützt werden während QWidget auf Desktops (Windows, Linux, MacOS) abzielt. QWidget ist vergleichbar mit anderen GUI Tolkits. QML habe ich nie viel benutzt.
Außerdem ist Qt durch den QtCreator und den darin integrierten QtDesigner eine sehr moderne Entwicklungsumgebung die Gui-Design per Drag&Drop auch für sehr große Software noch handlen kann und die eben 'aus einem guss´mit dem Debugger und dem Editor harmoniert.
Ein anderer wesentlicher Punkt ist imho auch immer die langfristige Perspektive. Qt hat in den letzten Jahren einen großen Zulauf/Schub bekommen. Dh es kommen sehr regelmäßig neue große Releases mit sehr modernen Features die man von einer Sprache erwarten würde. Nicht umsonst migrieren einige Linux UIs (LXDE) weg von ihren alten Frameworks und hin zu Qt: Lubuntu.
 
Zuletzt bearbeitet:
Siehe auch: https://en.wikipedia.org/wiki/List_of_widget_toolkits#High-level_widget_toolkits
Muss es eine FLOSS-Bibliothek sein? wxWidgets wollte ich auch noch nennen (aber da war doch einer schneller). Habe selbst bisher nur Erfahrung mit Qt (via PyQt), aber das könnte sich bald ändern. Daher habe ich mir vor kurzem dieselbe Frage gestellt wie du jetzt.
Wie funktioniert eigentlich die Plattformunabhängigkeit bei Qt, wenn z.B. auf Android C++ gar nicht direkt läuft? Mit QML als Zwischensprache?
 
Zuletzt bearbeitet:
Bei Qt würden mir wahrscheinlich meine bisherigen C++ Kenntnisse nicht viel bringen oder ? So wie ich das jetzt höre mit dem reinen C++ bei anderen Bibliotheken.
 
Bei Qt würden mir wahrscheinlich meine bisherigen C++ Kenntnisse nicht viel bringen oder ? So wie ich das jetzt höre mit dem reinen C++ bei anderen Bibliotheken.
Wieso? Qt ist genau so C++ wie jedes andere der hier genannten Gui Toolkits auch. Außerdem ist Qt sehr modern und objektorientiert und bietet eine saubere Api die nur das public anbietet, was man auch benutzen will. Dh wenn du OOP schon kannst oder eine andere OOP Sprache wie Java kannst ist Qt perfekt. Außerdem ist der Signal-Slot Mechanismus extrem einfach und von der Syntax her (imho) der einfachste den es in der C++ Welt gibt. Vergleich das mal mit boost::bind... Das schöne ist dann auch, dass man diesen Mechanismus auch für beliebige andere Stellen im Programm und nicht nur für die Gui verwenden kann.
Hierzu erinnere ich nich nur mal an diesen Thread:
https://www.computerbase.de/forum/t...stelle-leist-speichert-falsche-werte.1590886/
Wenn man sich zum Thema Serielle Schnittstelle mal anguckt wie schön sauber das dank Qt nutzbar wird (Klick) kann man evtl. erkennen was ich meine.
Ein einziges
Code:
connect(serial, &QSerialPort::readyRead, this, &MainWindow::readData);
setzt den ganzen callback auf und könnte auch direkt über Thread-Grenzen hinweg verwendet werden ohne dass man sich um irgend etwas kümmern muss.
Wenn du aber eher auf Pointer-schubsen und Bit-Manipulieren stehst oder viel Erfahrung in C hast findest du evtl andere Toolkits die besser geeignet sind.
 
Zuletzt bearbeitet:
kuddlmuddl schrieb:
und bietet eine saubere Api
Nun, darüber lässt sich trefflich streiten, wo man doch nach wie vor nicht um Q_OBJECT-Macros und den ganzen Automoc-Blödsinn herumkommt, weil sonst das Signal/Slot-Zeug nicht funktioniert.

Ich würde trotzdem ebenfalls zu Qt raten, es ist nunmal sehr gut dokumentiert und auch ohne GUI-Designer-Tools o.ä. recht einfach zu benutzen (vielleicht mal abgesehen von dem QML-Zeug, aber auch da gibt es Menschen, die damit umgehen können, ist also keine Raketenwissenschaft).
 
Ok, vielen Dank für die zahlreichen Antworten. Ich werde mich dann mit Qt auseinander setzen. Falls jemand eine Buchempfehlung hat kann er es mich gerne wissen lassen.
 
Ich hab dazu nie ein Buch gelesen. Braucht man imho aber auch nicht unbedingt.

http://doc.qt.io/

Die Doku ist wirklich gut. Wenn du C++ und Englisch gut kannst, dann solltest du damit auch ausreichend zurecht kommen.
Fang einfach mit ein paar Grundlagen an, z.B. auch einfach die Tools, der Qt Creator usw. Zwischendurch gibt es immer wieder Links auf die weiteren Artikel an denen man sich lang hangeln kann.

Für dich wichtig werden z.B. wohl auch die User Interface und Core Internals Artikel sein. Darüber kommst du dann auch zu so Grundlagen wie Object Model, Event System und Signal & Slot. Du musst ja nicht zwingend alles sofort verstehen.

Qt hat auch sehr viele Beispiele. Die lassen sich ganz einfach über den Qt Creator öffnen und kompilieren. Jedes Beispiel hat irgendein Thema. Dort kannst du dir ja ein paar interessante raus suchen und mal durcharbeiten. Die sind alle dokumentiert und die Hilfe ist im Qt Creator direkt aufrufbar. Falls du dann irgendwas nicht verstehst und was siehst was du noch nicht hattest, kannst du schnell die Hilfe aufrufen und nachlesen. Die Beispiele kannst du ja als Übung einfach ein wenig abändern und mit rumspielen.
 
Zurück
Oben