問題タブ [qqmlcontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
259 参照

c++ - QtObject が含まれている QQmlContext に C++ からアクセスできますか?

私は一種のシングルトンヘルパーオブジェクトを持っていますが、スタック/ヒープに物を置くことを好むので、実際にはシングルトンになりたくありません。そのため、ヒープ上に作成し、ルート QQmlContext の contextProperty として設定しました。また、QQmlContext のオブジェクト ツリー内でインスタンス化される C++ の QObject サブクラスもあります。

QObject が含まれている QQmlContext に C++ からアクセスして、問題の contextProperty にアクセスできますか?

私はこのようなことができることを知っています:

しかし、それは常に MyQObjectSubclass QML インスタンスを "cp: _cp" ボイラープレートで詰まらせなければならないことを意味します。

0 投票する
1 に答える
918 参照

c++ - C++ から QML Scatter3d アイテムにデータをロードする

Qt のサンプルで利用可能なサンプル「qmlscatter」の修正版を開発しようとしています。私の意図は、「Data.qml」ファイルのデータ ポイントを変更して、3D 環境で飛行軌跡をプロットすることです。飛行経路の実際の座標は、3 つの異なる QVectors QVector<double>"cogPosX_"、"cogPosY_"、および "cogPosZ_" に格納され、各インデックスは後のタイム ステップを表します。

フォーラムで言及されているように、「.setContextProperty」関数を使用して QML ファイルのデータ値を更新する必要があります。しかし、それを機能させる方法を実際に見つけることはできません。主な理由は、正しい「dataModel」IDを参照していないことだと思います。ここに私のコードがあります:

datapointobject.h // これは、各データ ポイントの XY および Z 座標を含む汎用オブジェクトを定義する必要があります。

datapointobject.cpp // これは、コンストラクターと関数を定義します。

threeDviewer.h // このヘッダーは、3D Scatter のプロットを担当する QQuickView インスタンスを作成する「Flightviewer」クラスを定義します。

threeDviewer.cpp //このファイルはQQuickView viewerインスタンスを構成します。フライト データを QML データ ファイルにインポートする責任があります。

「QQuickViewer ビューアー」は、次のコマンドを使用して外部関数で初期化されます。

qml ファイルのデータは、「qmlscatter」の例とまったく同じように定義されています。

データ.qml:

データは、Scatter3D アイテムを定義する main.qml ファイルによってアクセスされます。

main.qml

これを適切にプログラムする方法のヒントを教えていただければ、非常にありがたいです。よろしくお願いします!

0 投票する
1 に答える
360 参照

qt - c++ から qml 接続への接続信号

C++ からシグナルを発し、qml の Connections を使用して値をフェッチしようとしています。コードはコンパイル中ですが、不明な理由により、qml は " OnSomethingHappened " を認識できず、c++ から出力されたシグナルは " somethingHappened " です。

他の解決策があることは知っていますが、qml で接続を使用する必要があります。これは、qml で使用されるアーキテクチャによるものです。

qmlclient.h

qmlmqttclient.cpp

main.cpp

main.qml

上記のコードを実行すると、コンソールが表示されます