Hallo Leute, da ich alle heiligen Zeiten mal eine Anwendung mit GUI programmiere, bin ich auf der Suche nach einem recht einfachen GUI Toolkit. Das letzte Mal (schon gut zwei Jahre her), als ich ein Programm mit GUI programmiert habe, hab ich dafür LabWindows/CVI von National Instruments eingesetzt. Da das aber nun schon einige Zeit her ist, wollte ich fragen, ob es mittlerweile "bessere" (liegt natürlich im Auge des Betrachters) Software dafür gibt? Grundsätzlich muss ich an dieser Stelle sagen, dass ich mit LabWindows/CVI recht zufrieden war. Es hat vielleicht nicht die schönsten graphischen Oberflächen produziert, aber dafür war der Einstieg recht einfach. Aufgrund des recht hohen Preises der Software (trifft mich als Student jetzt zwar nicht so sehr, da ich mir eine Studentenlizenz holen kann), bin ich am Überlegen ob es nicht Zeit wäre sich nach etwas anderem umzusehen. Im Internet bin ich nun auf QT gestoßen, was für mich auf den ersten Blick nicht so schlecht aussieht. Die Frage ist nur, wie gut ist QT zum Darstellen/zur Aufbereitung von Messwerten geeignet? Ich würde nämlich gerne verschiedene Graphen mit Messwerten erstellen, in die man zoomen kann, usw... Da meine C++ Kentnisse nicht gerade berauschend sind, wäre es von Vorteil, wenn das GUI Toolkit C unterstützt. Wie sieht es da bei QT aus? Nach meiner Recherche im Internet sollte das ja mit QT möglich sein...Oder würdet ihr mir bei QT generell zum objetorientierten C++ raten?
Bernhard schrieb: > bin > ich auf der Suche nach einem recht einfachen GUI Toolkit. Hallo, evtl. das hier mal anschauen (ist aber C++ statt C) FLTK (pronounced "fulltick") is a cross-platform C++ GUI toolkit for UNIX®/Linux® (X11), Microsoft® Windows®, and MacOS® X. FLTK provides modern GUI functionality without the bloat and supports 3D graphics via OpenGL® and its built-in GLUT emulation. FLTK is designed to be small and modular enough to be statically linked, but works fine as a shared library. FLTK also includes an excellent UI builder called FLUID that can be used to create applications in minutes. FLTK is provided under the terms of the GNU Library Public License, Version 2 with exceptions that allow for static linking. http://www.fltk.org
Sowas schlankes klingt auf den ersten Blick natürlich toll. Meine Bedenken sind nur, dass ich mir dadurch im späteren Verlauf eventuell mehr Probleme einhandle, als mir lieb ist (weil z.B bestimmte Widgets einfach nicht verfügbar sind und man dann mühsam selbst Hand anlegen muss). Ich hab jetzt nochmal ein bisschen recherchiert und öfters gelesen, dass QT zusammen mit C nicht so eine gute Idee ist. Nun bin ich auf GTK+ gestoßen. Zusammen mit den entsprechenden Widgets [1] könnte ich mir das durchaus brauchbar vorstellen. Was meint ihr? [1] http://sourceforge.net/projects/giw/
Mit GTK hab ich auch eine zeitlang rumgemacht. Was mir da nicht passt sind die unmengen an DLLs. Noch was schlankes (benutz ich zZ) http://www.tecgraf.puc-rio.br/iup/
heinz schrieb: > Noch was schlankes (benutz ich zZ) > http://www.tecgraf.puc-rio.br/iup/ So auf den ersten Blick scheint das Framework ziemlich viele Windows UI Guidelines zu verletzen. Besonders die neueren Controls und Styles in Windows 7 / 8 werden scheinbar garnicht unterstützt!?
Schnorch schrieb: > So auf den ersten Blick scheint das Framework ziemlich viele Windows UI > Guidelines zu verletzen. Besonders die neueren Controls und Styles in > Windows 7 / 8 werden scheinbar garnicht unterstützt!? Das wird bei kleinen Toolkits, bei denen viele ja im Sinne von Cross-Platform programmiert sind, ganz schwierig. Entweder sucht man sich ein Windows-Only-Toolkit (und landet wohl bei .NET mit VB oder C#) oder man nimmt eines der Mainstream Toolkits, und da wirds bei C Unterstützung ganz eng. Wie viele Leute programmieren denn noch Windows Programme in C und benötigen die Windows 7/8 Styles? Das Mainstream-Cross-Platform Toolkit ist eh Qt - und meines Erachtens tut man gut daran, die Basics in C++ zu lernen um dieses Toolkit einsetzen zu können - es ist auch nicht so schwer. Objektorientierung ist bei GUI-Programmen eine feine Sache und OO sollte auch von jedem Programmierer halbwegs verstanden worden sein. Hobby hin oder her. Qt bringt viele Beispiele mit und hat eine breite Community. Man muss ja nicht jedes Feature von C++ verstanden haben und verwenden. Ob Qt jetzt schon die Windows 7/8 Syles gut unterstützt, weiß ich nicht. Aber wenn es ein Toolkit gibt, was das mal können sollte, dann wohl Qt, da es sehr viele Unterstützer hat.
Nachdem ich nun knapp ein Monat Erfahrung gesammelt habe, möchte ich mal ein kurzes Feedback geben: Angefangen hab ich mit GTK+. Nach einigen Tagen des Programmierens hab ich aber eingesehen, dass GTK+ für meine Zwecke einfach nicht das richtige ist. Irgendwie fehlte mir nämlich eine gute Library zum Plotten von Realtime Daten. Da ich das Gefühl hatte, dass Matplotlib für meine Zwecke wohl ganz gut geeignet sein könnte, und ich nun doch schon etwas Erfahrung in GTK gesammelt hatte, wechselte ich kurzerhand zu PyGTK. Der Umstieg von C auf Python erwies sich eigentlich recht einfach (da war ich echt erstaunt!). Nach ein paar Tagen des Programmierens stieß ich aber bei PyGTK wieder auf Einschränkungen. Unter anderem konnte ich kein geeignetes Widget finden, um HTML Inhalte einfach darzustellen. Nach mehreren frustrierten Nächten hab ich PyGTK schließlich den Rücken gekehrt und bin zu PyQt gewechselt. Der Umstieg von GTK auf Qt ging verdammt flott. Innerhalb von nur wenigen Tagen hatte ich mein Programm auf Qt portiert. Mittlerweile arbeite ich nun schon seit knapp zwei Wochen mit PyQt und muss bin immer noch so begeistert wie am Anfang. Vorallem der Qt Designer hat es mir ziemlich angetan. Meines Erachtens ist der Qt Designer um einiges fortgeschrittener als der Glade Designer (das ist das Design Tool auf der GTK Seite).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.