2017-06-08 3 views
0

Mein langfristiges Ziel ist es, HCI-Entwicklung für Embedded-Geräte zu machen, und durch eingebettete ich meine es wirklich, nicht Telefongeräte.Qt Quick-Controls 2.0 für Embedded-Gerät

Ich habe jetzt einen Monat lang auf Qt Widgets gearbeitet, Vermeidung von Qt Schnell aus irgendwelchen Gründen (befürchtete ich, dass QML-Code nicht optimiert wurde), aber gestern habe ich dieses Video gesehen haben: bei Youtube
Der Sprecher sagt Das Ende: "Wenn Sie ein Embedded-Produkt in diesen Tagen machen, verwenden Sie Qt Quick, besonders jetzt in 5.8. Es gibt keine Entschuldigung, Qt Quick nicht zu verwenden"

Aber im Gegenteil, er erklärt, dass für Embedded-Geräte wir sollten Verwenden Sie C++ - Code, nicht JavaScript.

Ich verstehe es nicht wirklich, bedeutet es, dass ich alle meine Objekte in C++ - Code erstellen und meine Architektur mit Qt Quick erstellen muss?

Ich bekomme nicht wirklich, was Qt uns tun soll. Ist es nur Kommunikation, da sie die alten und stabilen Qt-Widgets nicht optimieren wollen, oder ist Qt Quick wirklich die Lösung für Embedded-Geräte?

Ich persönlich denke, dass Qt nicht die Lösung für eingebettete Geräte ist, da sie sich weiterentwickeln, die Strategie ändern und nicht zu wissen, wohin sie gehen.

Ich entschuldige mich für diese nicht algorithmische Frage und danke Ihnen für alle Ihre Antworten.

Antwort

1

Ich kann nicht mit der Absicht des Entwicklers sprechen, noch kann ich für andere Entwickler sprechen. Ich kann nur mit dem, was ich verstehe, sprechen, als ein Entwickler, der seit 40 Jahren Embedded-Geräte entwickelt (Entschuldigung dafür, dass es sich um einen Nummer-Dropper handelt).

C++ oder JavaScript? Ich glaube nicht, dass diese Frage zu viel damit zu tun hat, ob Sie QtQuick verwenden oder nicht. Sicher, Sie können einige JaveScript in QML-Code einbetten (mit Einschränkungen), aber Sie können auch C++ in der gleichen Codebasis verwenden (nur nicht in der QML eingebettet). Dann gibt es Python. Sowohl Qt als auch QtQuick sind Programmierframeworks und sind etwas sprachunabhängig.

Meine Perspektive ist, dass QtQuick eine gute, portable Möglichkeit ist, Ihren Benutzerschnittstellencode zu erstellen. In meinem aktuellen Projekt (ein mehrachsiges industrielles Servosteuerungssystem) verwende ich QML für die Benutzerschnittstelle (mit ein wenig JavaScript, wo es gebraucht wird), C++ für den Großteil der höheren Verarbeitungsstufe (wie Netzwerksteuerung und Datenstreaming) , C und Assemblersprache für die unteren Ebenen (diese Routinen werden in uCs und DSPs ausgeführt). QML und C++ verbinden sich meiner Meinung nach gut.

+0

Wie Sie ein experimentierten Designer für Embedded-Geräte sind, ich denke, Sie für einige frühere Anmeldung verwendet Flash-? Ich versuche, beide "Frameworks" für (nur gerade jetzt) ​​den Designteil zu vergleichen. Da meine Expertenmeinung Qt (sehr) niedrig ist, ermutigt mich Ihr Kommentar, in meinen Forschungen weiter zu gehen.Danke – TaiZzZ

+0

Ich habe Flash für eine Benutzerschnittstelle vorher nicht verwendet, da ich HTTP nie für Kommunikation verwendet habe. Bis in die 90er Jahre waren die Benutzeroberflächen einfach Tasten und manchmal ein Zeichen-basiertes LCD. Dann, als anspruchsvollere UI benötigt wurden, fügte ich programmierbare Terminals hinzu oder verwendete C# mit Visual Studio. Ich benutze Qt nur für die letzten paar Jahre. – Mark

1

Ich glaube, dass der Sprecher auf die Idee kommt, dass die meisten wenn nicht alle Ihre Geschäftslogik mit einem C++ - Modell-Back-End durchgeführt werden sollte. Es ist jedoch möglich, all Ihre Logik nur in QML mit eingebettetem JavaScript auszuführen, da JS eine interpretierte Sprache ist, deren Leistung zur Laufzeit möglicherweise geringer ist als kompilierter C++ - Code (abhängig davon, wie gut C++ geschrieben ist).

Im Wesentlichen möchten Sie nur JS verwenden, um grafische Komponenten zu manipulieren, während Sie C++ mit QObject-Modellen verwenden, um die einzelnen Eigenschaften der QtQuick-Elemente zu aktualisieren.

Dies ist in der Qt Schnell Best Practices Wiki erwähnt, https://wiki.qt.io/Qt_Quick_Best_Practices