C++ GUI Möglichkeiten

Tockra

Lt. Commander
Registriert
Dez. 2008
Beiträge
1.063
Hey Leute,

ich wollte mal fragen, welche Möglichkeiten für GUIS es in C++ in Windows noch gibt, außer die WinAPI zu verwenden.
Im Vergleich zu Java AWT oder Java Swing, wirkt WinAPI recht komplex, da ich Tutorials gesehen habe, wo man um die 30 Zeilen + kryptische Funktionen nutzen muss, um ein einfaches Hello World Fenster angezeigt zu bekommen.
Habe noch von QT gehört, was auch recht cool zu sein scheint, da man da seine GUI's direkt unter anderen Plattformen wieder verwenden kann, leider ist die Lösung nicht kostenlos und man bindet sein Projekt entweder an bestimmte Lizenzbedienungen oder muss Kohle zahlen.

Gruß
T
 
Tockra schrieb:
Habe noch von QT gehört, was auch recht cool zu sein scheint, da man da seine GUI's direkt unter anderen Plattformen wieder verwenden kann, leider ist die Lösung nicht kostenlos und man bindet sein Projekt entweder an bestimmte Lizenzbedienungen oder muss Kohle zahlen.

Das stimmt nicht mehr. Seit 2009 wird Qt (kleines t) unter der LGPL-Lizenz vertrieben, d.h. du darfst proprietäre closed-source Programme mit Qt erstellen, solange du Qt dynamisch linkst (was man aber eh in 99% der Fälle macht).

Ich würde also Qt empfehlen. Ich finde, Qt hat die schönste API und sieht auf jeder Plattform gut aus (GTK unter Windows sieht m.M.n. nicht gut aus).
 
Das Problem ist, dass sobald ich z.B. ein Programm für den Rechner in Verbindung mit einer kostenpflichtige App programmiere, dass es dann Probleme gibt, weil das Projekt als kommerziell gilt und dann muss ich zahlen, so wie ich das verstanden habe.

Für Programme die nur ich und evtl. eine überschaubare Anzahl an Kumpel benutzen, ist Qt sicher ne gute wahl.
 
Ich kann auch nur Qt empfehlen - es ist imho in der C++ Welt einfach Konkurrenzlos.
Und ja: Kommerzielle closedsource SW geht ohne Geld zu zahlen.
 
Prinzipiell darf auch die nicht-kommerzielle Version in kommerziellen Programmen verwendet werden. Wenn du vor hast deine App über einen Appstore zu vertreiben würde ich erstmal sicherstellen, dass sich das mit der LGPL verträgt (kenne mich mit Appstores nicht aus).
 
Nein, du lieferst die dll´s mitsamt deinem Programm einfach mit aus. Das muss auf den Clients nicht extra installiert werden.
 
Miuwa schrieb:
Prinzipiell darf auch die nicht-kommerzielle Version in kommerziellen Programmen verwendet werden. Wenn du vor hast deine App über einen Appstore zu vertreiben würde ich erstmal sicherstellen, dass sich das mit der LGPL verträgt (kenne mich mit Appstores nicht aus).
Freie Software ist kommerzielle Software. GPL und LGPL erlauben beide, einen beliebigen Preis für die Software zu verlangen.

Im Gegenteil steht sogar in der Definition Freier Software, dass die Freiheit, die Software kommerziell zu verwenden zwingende Voraussetzung ist.
 
Jo, aber ich habe eben gelesen, dass GPL einen zwingt den Sourcecode auf Anfrage raus zu geben und dieser verändert werden darf und wieder weiter verkauft werden kann, was recht unwirtschaftlich wäre.
Ich stelle mir das gerade so vor, dass irgendein Spielehersteller seinen Sourcecode rausgeben muss, weil er eine bestimmte Engine benutzt und alle Käufer des Spiels können den Sourcecode anfordern, drei Zeilen ändern und das Spiel an Ihre Freunde weiter verkaufen/verschenken
 
Tockra schrieb:
Jo, aber ich habe eben gelesen, dass GPL einen zwingt den Sourcecode auf Anfrage raus zu geben und dieser verändert werden darf und wieder weiter verkauft werden kann, was recht unwirtschaftlich wäre.
Ich stelle mir das gerade so vor, dass irgendein Spielehersteller seinen Sourcecode rausgeben muss, weil er eine bestimmte Engine benutzt und alle Käufer des Spiels können den Sourcecode anfordern, drei Zeilen ändern und das Spiel an Ihre Freunde weiter verkaufen/verschenken
Das ist richtig. Macht die Software nur eben nicht unkommerziell, sondern einfach nur für deinen speziellen Fall ungeeignet.

Die LGPL verlangt nur, dass du die Freiheiten, die du vom Entwickler der Software bekommen hast, weiterreichen musst. So lange du separat davon selbst entwickelst, kannst du für diesen Teil vom Benutzer verlangen, was du willst.

€: Kleine Ergänzung, um ein mögliches Missverständnis aufzuklären. Dein Beispiel mit dem Spieleentwickler trifft nicht zu. Doom3 ist zum Beispiel GPL-Software. Ich darf es aber trotzdem nicht weiterverkaufen. Denn das Urheberrecht bleibt natürlich bestehen und die GPL erstreckt sich nur über das Programm und nicht das gesamte Spiel (Texturen, Maps, Figuren, Videos, den Plot, etcpp)
 
Zuletzt bearbeitet:
@asdfman: Wo habe ich was anderes behauptet?
Qt listet auf seiner Homepage den Support für App Stores expilizit bei den kommerziellen Varianten, aber nicht bei der kostenlosen LGPL-Version. Da ich mich mit dem Thema noch nicht näher beschäftigt habe weiß ich nicht ob es hier nur um irgendeine Art von speziellem Support (Tools / Beratung?) geht oder ob es in den Vertragsbedingungen von Appstores irgendwas gibt, dass sich nicht mit der LGPL-Lizenz verträgt und darauf habe ich den Threadersteller aufmerksam gemacht.

Edit:
Um nochmal zu präzisieren, worauf ich hinaus will:
Hier gibt es den Punkt
Mobile app distribution through public app stores
und der ist bei der sogenannten "Community" Edition eben nicht angehakt.

@Tockra: Qt steht (zumindest Größtenteils) wohl nicht unter GPL sondern LGPL was dir wesentlich mehr Freiheiten einräumt. Insbesondere musst du deinen Sourcecode nicht offen legen, solange du Qt nur als dynamische Bibliothek einbindest.
 
Zuletzt bearbeitet:
Aber ich muss bei LGPL die Möglichkeit einräumen, dass die Qt .dll's manipuliert werden, womit meine Software z.B. im Falle eines Spiels leicht Hackbar wäre bzw. leicht wäre Trainer zu entwickeln?
Leute die dazu in der Lage sind sowas zu tun lassen sich garantiert nicht von einer Lizenz aufhalten :D
Ne ernsthaft: Wo genau siehst du das Problem? Du lieferst halt bei der SW die Qt-DLLs mit, die auch jeder bei http://qt-project.org/ herunterladen könnte - es gibt also keinen Grund, der gegen Qt spricht.
Oder falls es dieses Missverständnis war: Du musst selbstverständlich nichts von deiner SW im Quellcode mitliefern nur weil an anderer Stelle die Gui Qt DLLs verwendet.
Und deine SW wird auch nicht "leichter" hackbar weil du Qt verwendest. Im Gegenteil: Da Qt (imho) qualitativ sehr weit entwickelt ist wirst du weniger Sicherheitslücken haben wenn du zB die QTCPServer Klasse verwendest als wenn du dir ne C++ Implementation ohne Qt zusammengoogelst.
Nur mal als Beispiel: Einige Autohersteller verwenden QT (QML) um ihre Infotainment-Systeme zu programmieren. Dh du verwendest eine Qt-App während du den Radiosender wechsel, die Klimaanlage einstellst oder das Navi benutzt. Da liefert dir auch niemand ne CD mit Quellcode mit ;)
Falle dich Einsatzgebiete genauer interessieren sind hier mal die beiden relevanten Links:
http://en.wikipedia.org/wiki/Qt_(software)#Uses
http://en.wikipedia.org/wiki/Category:Software_that_uses_Qt

Selbst wenn man ignoriert, dass Qt plattformunabhängigkeit bietet würde ich jede C++ Gui immer mit Qt schreiben anstatt mir irgendwas anderes an zu tun.
Für einen Java oder C# Entwickler ist C++ immer erstmal ziemlich armselig, weil man kaum mehr als das hier http://www.cplusplus.com/reference/ als Werkzeug bekommt. Durch die Ergänzung von Qt kommen aber nicht nur Gui Funktionalitäten hinzu sondern auch andere coole Möglichkeiten, wie Multimedia, TCP, Nebenläufigkeit und unendlich viel mehr. Außerdem ist durch die gute Doku bei Qt die Hürde etwas zu verwenden viel geringer als zB bei boost.

Außerdem ist der QtCreator sicher eine der besten C++ IDEs die man heutzutage verwenden kann. Das ist natürlich noch mehr Geschmackssache als die Frage nach dem Qt Toolkit an sich aber der QtCreator macht auch viel Spaß, wenn man plain-C++ ohne Qt programmiert. Ich verwende ihn beruflich für sehr große Projekte, privat für jede kleine Software mit oder ohne Gui und sogar für bare-metal µC Programmierung komplett ohne OS.
 
Zuletzt bearbeitet:
Tockra schrieb:
Aber ich muss bei LGPL die Möglichkeit einräumen, dass die Qt .dll's manipuliert werden, womit meine Software z.B. im Falle eines Spiels leicht Hackbar wäre bzw. leicht wäre Trainer zu entwickeln?

Dazu braucht man nur einen Debugger und du kannst niemanden daran hindern, einen zu benutzen. Sicherheit in Software ist außerdem ein gigantisches Gebiet und hängt weniger von der Lizenz, als von der Expertise der Entwickler ab. Im Zweifel haben die Entwickler von Qt mehr Expertise als du.

€: Ein absichtlich provokatives und verkürztes und die Realität verzerrt darstellendes Beispiel:

1. Ein verbreitetes Betriebssystem, dessen Quellcode größtenteils nicht öffentlich zugänglich ist:
w7.png

2. Ein verbreitetes Betriebssystem, dessen Lizenz sogar noch freier als die GPL ist:
obsd.png

(Heck of a long time heißt: Seit 1996)
 
Zuletzt bearbeitet:
@Kuddlmuddl: Das Problem ist, dass man - weil der Sourcecode verfügbar ist - die mitgelieferten Dlls problemlos gegen selbst modifizierte und kompilierte Dlls austauschen kann. Bei einem Programm, das statisch gegen die Bib gelinkt wurde ist das wesentlich schwerer (wenn auch nicht unmöglich).

@Tockra:
Da hast du recht.
Früher hätte ich gesagt, dass man ab einem gewissen Level der professionellen Softwareentwicklung einfach Geld investieren muss um Geld zu verdienen. Sei es jetzt die Hardware, die IDE, Programme zum Erstellen von Grafiken oder Sounds, die Engine, Testgeräte etc.. Aber inzwischen gibts ja selbst die 3D Engines kostenlos, insofern hat das Argument vielleicht weniger Gewicht.

Was mir aber nicht so ganz klar ist, ist warum das für dich überhaupt ein Problem wäre? An deinen Sourcecode kommt man ja trotzdem nicht ohne weiteres ran. Wenn du ernsthaft gegen Cheater im Multiplayer vorgehen willst, dann musst du dafür ohnehin viel serverseitig implementieren und ansonsten greift wieder das, was ich vorher geschrieben habe.
 
Zurück
Oben