私はQtとQmlが新しく、どのように連携しているのか把握しようとしています。
C++の使用場所とJavaScriptの使用場所が混乱しています。 QMLオブジェクト(フォーム、入力、ドロップダウンなど)が2つあるとしましょう。今や明らかにこれらのコンポーネントにはいくつかのロジックコードがあります。私はこのロジックコードをJavaScriptまたはC++で書くべきですか?私の入力にプロパティとシグナルのグループがあるとしましょう。これらはどこでどのようにコード化すべきですか? JavaScriptで書く必要がある場合は、C++をどのように使用するのですか。 C++とJavaScriptがどのように接続されていますか?私はかなり混乱している!ドキュメントも私を助けません。 ありがとうQt Qml Javascript - どこで使う?
答えて
QML言語はインターフェイスを記述するために使用されるように発明されました。これはデザイナーにとって理解しやすいことを意味します。
これは、プログラムでは、一般にすべてのロジックがC++で実装され、UIがQMLで実装されることを意味します。 C++とQMLをリンクするには、QMLにC++コードを公開する必要があります。それを行うには多くの方法があります。 たとえば、CMLクラスをQMLで利用できるようにするには(http://doc.qt.io/qt-5/qtqml-cppintegration-topic.htmlを参照)、シングルトンのインスタンスをQMLで利用できるようにするか、QObjectポインタをQML環境に挿入します。これらのすべては、Qtメタオブジェクトシステム(http://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html)を大量に使用しています。
// in C++
class MyClass
{
Q_OBJECT
public slots:
int doSomething();
...
};
int main()
{
...
engine->rootContext()->setContextProperty("foo", new MyClass());
...
}
// in QML
function foobar() {
var anInt = foo.doSomething();
}
あなたはまた、これまで、C++を使用してJavaScriptですべてを実装せずに完全なプログラムを書くことができますjavascriptを書き込むことができるようにQML。 しかし、これは一般的には悪い考えです。特に演奏が必要な場合にはそうです。
QMLを拡張するために、C++はここにはありません。しかしQMLは、C++オブジェクトへのシンプルなインターフェイスを提供するためにここにあり、開発者やデザイナーはC++をタイプ/学習することなく派手なUIを作成することができます。
QMLを書くときの私の個人的なルールは、できるだけ早くC++に行くことです。 QMLで簡単な関数を書くことはできますが、基礎となるQMLエンジンとJSエンジンの最適化のフルパワーを活用するには、それらを短く簡単に保つ必要があります。 QMLを高速に保つのは難しいですが、QMLを使うときに何を考えたらいいのか、Qtドキュメントの全ページがあります(http://doc.qt.io/qt-5/qtquick-performance.html)。
- 1. QTのjavascriptからQMLキャンバスにアクセス
- 2. QT QML WebView Cache
- 3. QT QML QtLocationマッププラグイン
- 4. Qt QMLシングルトンIntellisense
- 5. Qt QML Javascriptはどのようにメモリを管理しますか?
- 6. Https POST/GET with Qml/Qt
- 7. のQt 5でrecenterはQT/QML地図
- 8. Qt QMLスポットライト効果
- 9. QT QML C++とQMLの両方のアイテム
- 10. QtクイックQML MouseAreaオートリピートオンプレス
- 11. QtクイックコントロールでQMLファイルをプレコンパイル
- 12. Qt QML:最大FPS制限
- 13. Qt(QML)破線の円
- 14. QT QMLフォトギャラリーのSymbian^1
- 15. TabBarの線の色Qt QML
- 16. Qt qmlエイリアスの問題
- 17. のQt 5.9 QMLアップ/ダウン
- 18. qmlとC++ qt quick 2アプリケーション
- 19. QT QMLマウスポインタの回転
- 20. これはTask ManagerのフラグのQt qmlバグですか?
- 21. QML/QTの業界での利用
- 22. QMLコンテキストでのQt C++イベントの処理
- 23. qtリストの無限スクロールQMLの
- 24. QT/QMLどのようにmapReady地図上で動作しますか?
- 25. エラー:QTで不明なモジュール:qml quick-Qt Creator
- 26. Qt/Qml:マップ要素のリピータとMapItemView
- 27. AndroidへのQt、Qml、C++ベースアプリケーションの移植
- 28. qmlのqt C++ウィジェットの再利用
- 29. QMLで使用<a href="http://qt-project.org/doc/qt-5.0/qtqml/qtqml-cppintegration-exposecppattributes.html" rel="noreferrer">Exposing Attributes of C++ Types to QML</a>クラスのとおりQML
- 30. qtクリエイターで既存のqmlファイルを使用するにはどうすればよいですか?
qmlで処理できない場合は、CML – eyllanesc
QMLを使用してください。ほとんどの場合、自立しているので、@eyllanescは既に欠けている必要があるまでC++を使用しないでください機能性。 QMLを拡張する方法としてC++を利用する。 [こちら](https://qmlbook.github.io/)は、QMLを学ぶのに適しています。 – folibis
単純なユースケースは、C++側を「バックエンド」およびQMLフロントエンドコードと見なすことです。ですから、QML/JSとのC++やUIのやり取りのデータベース接続や作業を簡単に行うことができます。 – xander