Ich habe versucht, Qt5 zu benutzen, aber ich finde es sehr verwirrend.
Ich habe gute Kenntnisse von C ++ (ich würde zwischen mittlerem Expertenlevel sagen), aber keine Kenntnisse von Javascript oder QML (nur einfaches HTML)
Wenn ich die Beispiele und Tutorials durchführe, die mit Qt geliefert werden, finde ich dann mehr Referenzmaterial oder "Was ist neu" Zeug für Entwickler, die bereits Qt benutzen. Es zeigt mir zufällige (nicht systematische) Teile der riesigen Qt-Bibliothek.
Ich bin derzeit mehr daran interessiert, Qt-Widget-basierte Apps als Qt-QML-basierte Apps zu verwenden.
Also das ist was ich fragen möchte.
Ist QML die Hauptsprache und C ++ nur eine unterstützende Sprache? Mit anderen Worten: lernt QML unbedingt, um QT zu verwenden?
hat die Verwendung von Qt für C ++ basierte Apps zu einer de-facto abgeschriebenen Sache? Wird Qt heutzutage nur für QML-Apps verwendet?
Was muss ich lernen, um Qt verwenden zu können?
Ich habe ein paar Qt-Anwendungen entwickelt und bis heute kein Wissen über qml
. Es ist definitiv der neue Weg , weil es neuer ist als das, was du willst, aber wenn alles in qml
in Qt 6 oder 7 gemacht wird, habe ich keine Ahnung.
Also, um Ihre Fragen zu beantworten:
Im Moment sehe ich keinen Grund, warum qml
erforderlich wäre, um Desktop-basierte Anwendungen mit Qt zu entwickeln. Das kann für Mobilgeräte anders sein, aber ich habe bisher keine Erfahrung darin.
In Qt 5 gibt es meines Wissens keine Anzeichen dafür, dass der alte Weg veraltet ist. Bitte korrigieren Sie mich, wenn ich falsch liege
Wenn Sie bereits ein gutes Verständnis von c++
haben, ist die Hauptsache, die Sie lernen müssen, das Prinzip von Signale & amp; Slots und die Hauptklassen, die in Desktop-Anwendungen verwendet werden ( QApplication , QMainWindow , QWidget und QObject zum Beispiel)
Außer dass ich vorschlagen würde, & amp; Installieren von Qt (einschließlich Beispielen) und Ausführen einiger dieser Beispiele . In Qt 4 gab es auch ein Programm namens qtdemo , zu dem ich keinen Link in Qt finden konnte 5, also weiß ich nicht, ob es noch existiert. Wenn Sie gute Beispiele dafür finden, was Sie tun können.
Ja, das Qt Widgets Modul, das wir in Qt 5 haben, ist jetzt als markiert "Fertig", was bedeutet, dass wir niemanden haben, der aktiv an neuen arbeitet Funktionen für das Modul zu diesem Zeitpunkt.
Als jemand, der viele Jahre mit der Entwicklung von QWidget
basierten Anwendungen verbracht hat, finde ich es viel einfacher, UIs in QML zu entwickeln - es lohnt sich, es zu lernen.
Nein, und ich habe keine Ahnung, wie Sie zu dieser Schlussfolgerung gekommen sind. QtQuick ist eine Front-End-Ebene, darüber hinaus hat sie sehr eingeschränkte Funktionalität. Mit anderen Worten, für alle außer den einfachsten Anwendungen benötigen Sie ein C ++ - (oder Python, Haskell, Java, etc.) Backend.
Qt ist ein (riesiger) Rahmen, du kannst nicht am "Anfang" beginnen und alles lernen, bis du das "Ende" erreichst - das macht keinen Sinn. Verwenden Sie die Lernprogramme, um ein Gefühl für das API-Design zu bekommen und sich mit den üblichen Problemen vertraut zu machen, und lesen Sie die Referenzdokumentation, um zu erfahren, welche Fähigkeiten es hat.
Was Sie lernen sollten: Kerninnere , MVC , QtQuick , qmake .
Es gibt viele Qt-Tutorials und Ressourcen online verfügbar. Sie können einfach eine Suchmaschine verwenden, um zu finden, was Sie wollen.
Das Wichtigste, was Sie so schnell wie möglich lernen müssen, ist das Konzept der Signalsteckplätze, und zwar aus zwei Gründen:
connect
Funktion und der qmake
Präprozessor. Es ist überhaupt nicht kompliziert. Sie können es als eine große Hilfe bei der Programmierung betrachten, aber Sie müssen lernen, wie Sie es verwenden (es ist einfach).
QML ist meiner Meinung nach nicht unbedingt notwendig. Es kann für mobile Anwendungen nützlich sein, aber ich entwickle jetzt nur Desktop-Anwendungen und entwickle ohne Probleme nur mit C ++ - Klassen.
Qt ist ein sehr wichtiger Rahmen, der seit Jahren verwendet wird, während QML erst kürzlich auftrat. Viele Anwendungen werden mit Qt und nicht mit QML erstellt.
Momentan gibt es nicht viele Bücher über Qt5, Hauptquelle ist also offizielle Dokumentation und Web, aber derzeit verfügbare Bücher:
Allgemeines Qt-Buch, das auf Qt 5.3 aktualisiert wurde, aber auf Russisch: Qt5.3. Professionalnoe programirovanie na C ++
Nein, ich kenne Leute, die QML überhaupt nicht verwenden, aber jemand anderes benutzt sie mehr als C ++. Es hängt wirklich von Ihren Bedürfnissen ab.
C ++ ist aktiv, und zum Beispiel bietet Digia zusätzliche nicht-freie Module , wie Qt Charts, die verwendet werden können Botj mit QML und C ++. Auch Qt-Entwickler unterstützen immer neue C ++ - Standards. Zum Beispiel haben wir zusätzliche Funktionen, wenn C ++ 11 oder C ++ 14 wurde veröffentlicht. Daher ist es definitiv keine veraltete Sprache.
QML ist nur eine Front-End-Sprache, es ist sehr gut, schöne Schnittstellen ohne Kopfschmerzen zu erstellen, aber Back-End ist immer noch C ++ - Code.
Es wird schwierig sein, vollständige und statistisch nachweisbare Informationen darüber zu finden, aber ich freue mich, Ihnen meine Meinung zu geben, die auf meiner mehr als sechsjährigen Erfahrung mit Qt basiert.
1) Nein, es ist nicht unbedingt notwendig, QML für die Verwendung von Qt zu lernen, es gibt Ziele, die mit QML einfacher zu erreichen sind und andere, die in Qt / c ++ leichter zu erreichen sind. Es gibt einige Dinge, die mit QML einfach nicht möglich sind . Wenn Sie beispielsweise eine leichtgewichtige, mobile, plattformübergreifende App erstellen möchten, die auf einfachen Daten basiert und bei der die Benutzerfreundlichkeit weitaus wichtiger ist als die Geschäftslogik, ist QML wahrscheinlich die beste Wahl. In vielen anderen Fällen ist Qt / c ++ wahrscheinlich eine bessere Option.
2) Seit einiger Zeit ist c ++ / Qt das einzige wirklich starke plattformübergreifende Framework für Desktop-Anwendungen, jetzt ist es nicht mehr der Fall und auch Desktop-Anwendungen verlieren allmählich an Popularität, heutzutage werden Web-Anwendungen und mobile Anwendungen bevorzugt große Öffentlichkeit und von Managern, die entscheiden, wie Anwendungen zu implementieren sind. Meiner Meinung nach Desktop-Anwendungen wurden abgeschrieben und nicht Qt / C ++, aus diesen Gründen drängt Digia (die Qt-Besitzer) QML mehr als die traditionelle C ++ Sache, in der Hoffnung, Manager werden wählen, um ihre nächste Anwendung zu entwickeln, anstatt eine Webapp oder eine native mobile App
Es gibt ein Feld, in dem Qt immer noch der De-facto-Standard ist, und das ist der Markt für Embedded-Anwendungen. Es gibt Millionen von Geräten wie Waschmaschinen, Geldautomaten, Spielautomaten, Autocomputer, GPS-Geräte usw., die Linux-basiert sind und von Software gesteuert werden, die vollständig in Qt / c ++ geschrieben ist.
3) Um mit dem Lernen von Qt zu beginnen, wäre ein erster paar Tage Kurs eine gute Idee, aber es wird nicht billig sein. KDAB ist wahrscheinlich eine gute Option, sie geben regelmäßig Kurse in Europa und in den USA. Wenn Ihr Budget keinen Kurs zulässt, dann schlage ich vor, die Beispiele in der IDE zu betrachten und (teilweise) die umfangreichen Tutorials und Vorschläge zu lesen, die Sie online finden können.