QT Anfänger
-
Hallo,
ich habe zwar die Grundlagen von C++ jetzt schon gelernt, bin aber noch unerfahren im Umgang mit der GUI Entwicklung. Um weiterhin C++ zu üben, und auch für meine Späteren Projekte, würde ich gerne mit QT arbeiten.
Zu Qt gib es aber leider nur sehr wenige oder zu alte Tutorials auf YouTube, ich habe auch versucht auf andere Website Anleitung oder Beschreibung für das arbeiten mit QT gesucht. Leider war ich bisher erfolglos.Könnte mir Jemand, der sich damit auskennt, ein paar Links zu verfügung stellen, mit welchen ich die Benutzung oder besser, die nötigen Befehle, in QT lernen kann?
Danke, schon im voraus!
-
Hauptanlaufstelle sollte die direkte Qt-Doku mit der Qt Reference Documentation sein.
Insb. unter Qt Examples And Tutorials sind verschiedene Beispielprojekte zu finden.Wenn du den Qt Creator als IDE verwenden möchtest, dann gibt es unter Erste Schritte mit Qt einen Einstieg mit einem "Hallo World"-Programm.
Zwei weitere deutsche Tutorials: Qt von 0 auf 100 sowie Qt-Tutorial
-
Solltest dir auch mal überlegen, ob du mit Qt Widgets oder Qml arbeiten willst. Qt Widgets ist relativ feature complete und lange etabliert und schreibt man selbst in C++, qml ist eine deklerative Sprache, die man mit C++ als backend nutzt. Qml ist neuer und Qt legt eindeutig den Fokus auf dessen Entwicklung ... wenn man neu anfängt würde ich also dazu raten sich eher mit qml zu beschäftigen, insbesondere da es auch auf mobil ausgerichtet ist. Allerdings ist dekleratives programmieren vlt. auch nicht jedermans Sache und es ist relativ offen noch für Änderungen (was sowohl positiv als auch negativ jetzt sein kann .... bsp. steht auf der Roadmap für Qt6 für Dezember dieses Jahr verschiedene qml "slangs", ein strikter mode wird das kompilieren in C++ erlauben)
-
Ich muss dazu sagen, dass ich mit Qml bisher nicht wirklich warm geworden bin. Hab so 15 Jahre Erfahrung mit Qt Widgets und wollte auch mal etwas mit Qml rumspielen. Aber da tauchen ständig irgendwelche Probleme auf, die ich ohne weiteres weder lösen noch nachvollziehen kann...
Kann gut sein, dass ich mich da etwas blöd anstelle, aber mich hat das jetzt nicht so überzeugt, dass ich das weiterempfehlen würde.
-
Schließe mich @Mechanics an. Ich stelle mich vermutlich auch zu blöd an....
Das Qt-Framework selbst mag ich sehr gern, aber Qml hat mich bisher nicht vom Hocker gehauen.
-
Das sehe ich auch so. Auch ich habe mal QML getestet bin damit aber nicht wirklich warm geworden. Ich sehe auch ehrlich nicht ein warum ich jetzt noch eine Sprache lernen soll um Oberflächen zu schreiben. Das einzige Problem hier ist, dass Qt selbst das anders sieht. Speziell neue Features (Qt3D, Location etc.) werden vorrangig über QML unterstützt. Mit reinen C++ geht es nicht oder du bekommst nur ein Subset was ich schade finde.
Ich würde trotzdem einem Anfänger eher raten bei C++ erstmal zu bleiben. Gerade wenn man anfängt würde ich es als schwierig empfinden gleich zwei verschiedene Systeme zu lernen.
-
Ich habe direkt mit QML angefangen ohne mir dir Widgets vorher anzuschauen. Bin bis jetzt ganz zufrieden damit. Wahrscheinlich ist es wie bei allem. Man trainiert sich etwas an und jede Alternative dazu wird später immer damit verglichen wodurch man sich natürlich mehr über Sachen ärgert die plötzlich nicht oder anders funktionieren als sich darüber zu freuen was nun einfacher funktioniert. Ist zumindest bei mir so. Bis jetzt konnte ich immer alles mit QtQuick umsetzen was ich wollte. Es gefällt mir, dass eine Anwendung die eben noch auf meinem PC lief auch direkt auf dem Smartphone funktioniert (solange man von Anfang an beim Projekt alles richtig gemacht hat). Ich habe mir nun im Nachhinein mal paar Videos zu den Widgets angeschaut und irgendwie kommt mir dort vieles so umständlich vor^^. Bei QtQuick schaut man häufig nur mal kurz in die Doku und versteht sehr schnell wie neue Elemente funktionieren und welche Eigenschaften sie mitbringen. Ich denke auch, dass QtQuick den Widgets in nichts mehr nachsteht und wer C++ kann der lernt QML im Handumdrehen. Es ist alles sehr simpel gehalten.
Im Qt Forum habe ich gelesen, dass die Richtlinie ob QtQuick oder Widgets einfach nach der Plattform entschieden wird. Weiß man genau, dass man immer DesktopOnly entwickeln möchte, passen die Widgets besser. Ist man dran interessiert mehrere Plattformen abzudecken, greift man zu QtQuick, da dies mit den Widgets sowieso nicht funktioniert....
Und meine persönliche Meinung ist, will man jetzt direkt AppEntwickler für Mobilgeräte werden, greift man gar nicht erst zu C++^^.
-
@Zhavok sagte in QT Anfänger:
Man trainiert sich etwas an und jede Alternative dazu wird später immer damit verglichen wodurch man sich natürlich mehr über Sachen ärgert die plötzlich nicht oder anders funktionieren als sich darüber zu freuen was nun einfacher funktioniert.
Ist bei mir in dem Fall nicht so... Das Problem ist eher, ich will etwas machen, lese die Doku, schau mir Beispiele an, mache etwas, wo ich keinen Unterschied zu den Beispielen erkenne, und es funktioniert nicht. Ich google paar Stunden rum, und find immer noch keine Lösung (und auch zu wenige Infos, weil das nicht so verbreitet ist).
Ich hatte hier z.B. mal so ein Problem gepostet, und wenn ich mich recht erinnere, habe ich das immer noch nicht gelöst:
https://www.c-plusplus.net/forum/topic/350259/drag-drop-in-qml
-
@Mechanics ich muss zugeben ListView und alles was damit in Zusammenhang steht finde ich sehr unschön gelöst. Die verschiedenen Wege Modelle dafür zu erstellen sind manchmal einfach zu viel des Guten. Schon wenn man seine Liste von C++ bekommt und einfach mal einen Eintrag davon nicht anzeigen will gibt es irgendwie nur umständliche Lösungen.
Vor kurzer Zeit hatte ich auch ne Liste welche man per Drag and Drop ordnen konnte. Zusätzlich sollten die Elemente gelöscht werden können wenn sie nach ganz rechts gezogen werden. Um darauf hinzuweisen sollte das gezogene Objekt sich rot färben wenn es auf der DropArea hovert. Hab ich allerdings vorher auch die Position des Objekts geändert, wurde halt einfach ein falsches Element rot eingefärbt. Konnte den Bug irgendwie bis jetzt nicht lösen.
Manche Lösungen für Probleme sind auch ganz schön hacky. Ich hoffe aber, dass da Qt6 ein bisschen Ordnung ins Chaos bringt
-
Ich würde spontan sagen, dass es alles in allem schon ganz gut gelöst ist (Verbesserungspotential ist natürlich immer da), aber die Ressourcen zu qml sind halt begrenzt. Und grundsätzlich ist qml ja auch relativ einfach (zumindest kann man ohne viel Vorkenntnisse schon relativ viel erreichen), da ist man auch eher dazu geneigt sich nicht so intentsiv damit auseinander setzen zu wollen ... ging ja sonst auch immer so einfach.
In C++ setzt sich auch keiner hin und erwartet, dass er innerhalb von 2 Tagen jedes Problem durch Fingerschnipsen lösen kann. Nur ist da halt der Unterschied, dass zum einen die Komplexität wesentlich schneller ersichtlich ist (die kommt bei qml erst bei komplexeren Themen zum Vorschein) und das es viel Lektüre dazu gibt und ein Teil davon ist sogar gute LektüreBis jetzt war ich eigentlich immer in der Lage meine Problemchen zu lösen. Da ich auch mit QtWidgets schon gearbeitet habe und auch mit dem Designer (welchen ich hier mal als dritte Lösung ansehe), kann ich zumindest für mich behaupten, dass ich mit beiden wesentlich langsamer bisher war. Ich kann jetzt aber auch nicht auf 15 Jahre Qt Erfahrung zurück blicken