問題タブ [qquickitem]
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.
c++ - C++ からの QQuickItem のインスタンス化とセットアップの難問 (コンストラクターに何も渡すことは許可されていません)
私は、C++ からカスタム QML 要素を動的にインスタンス化しようとして困っています。
したがって、問題をレイアウトするには:
- UI から抽象化された軽量の
Node
オブジェクト データ構造があります。 - 大量のメモリ
QObject
と派生メモリがあるため、必要に応じて UI 要素をインスタンス化する必要があります。 - それぞれ
Node
に_ui*
メンバーがあり、それぞれUI
に_node*
メンバーがいます。 - それぞれ
Node
に固有の があり_id
、それぞれUI
に がありID
PROPERTY
、 から配信され_node*
ます。Node
ID はインスタンス化時に設定され、変更できないため、ID プロパティは読み取り専用です。 - QML 要素には、デフォルトのパラメーターを持つコンストラクターのみを含める必要があります。たとえば、コンストラクターに何も渡すことはできません。
- QML 要素が作成されると、
_node*
メンバーはであるため、 ID プロパティにアクセスしようとするNULL
QML 子要素はインスタンス化時に設定されないため、aux メソッドによってのみ設定できますが、プロパティは事実上読み取り専用の定数であり、インスタンス化後、 のメンバーが実際に設定されると更新されなくなります。UI
_node*
_node*
UI
基本的に、QML要素にアクセスできるように、作成時Node
にそれぞれに対応するリンクを設定できる必要がありますが、コンストラクターに渡すことはできません。プロパティは読み取り専用であるため、読み取りますインスタンス化時に、メンバーがまだであるときに 1 回だけなので、ID 値にアクセスできません。UI
UI
UI
_node*
UI
NULL
IDプロパティが実際には変更されず、変更できず、変更されるべきではないにもかかわらず、インスタンス化後のメンバーを設定するときに発行するNOTIFY
idChanged()
シグナルを追加し、IDゲッターのチェックを追加して、偽のダミーを返すことです。の場合は_node*
任意の値、それ以外の場合はメンバーから ID 値をフェッチします。言うまでもなく、これはエレガントではなく、いくらかのオーバーヘッドが追加され、ダミーの ID 値はワームの可能性があるため、QML 内部の不適切な設計を無効にする方法についてのアイデアを歓迎します。_node*
NULL
_node*
c++ - QML で複数の QQuickPaintedItem を非同期に更新する
QQuickPaintedItem から継承するクラスを使用して、openCV でキャプチャされたビデオ フレームを表示しようとしています。
このクラスには、QTimer タイムアウト (40ms) に接続されている queryFrame() というスロットがあります。
queryFrame() コード:
queryFrame() が呼び出されるたびに、ビューが更新されます。これを行っていますが、非同期で動作していません。
この CVCamScreen のそれぞれを独立した方法で更新するにはどうすればよいですか?
CamScreens をレンダリングする QML コード:
c++ - 計算用の C++ 構造体を Qml に公開する方法
次の問題があります。
C++ でモデルを開発し、Qml でビューを開発し、コントローラーを介してそれらを接続しています。私のモデルでは、複数の計算を実行します。また、アプリケーションのユーザーに、qml で記述されたカスタム イベント ハンドラーを作成する可能性を提供します。ここで、固定小数点表記を使用することに決め、対応する C++ クラスを作成しました。ここで、FixedPoint クラス (そのすべての演算子を含む) を、私のアプリケーションを Qml で拡張することを決定した開発者に提供したいと考えています。これまでのところ、すべてのデータを QProperties として提供しましたが、これはコーディング ガイドラインで要求されています。しかし、私のチームでそれらについて話し合うために、他の解決策を受け入れます。明らかに、不動点は同一性ではなく、アルゴリズムはそれをコピーする可能性に依存していますが、これは QObject から継承する場合には許可されていません。
そこで質問が来ます: ID ではない C++ クラス / 構造体を QML に公開するにはどうすればよいですか?
コードの例:
C++ で記述された QQuickItem のプロパティ (値) として Qml で使用したい:
プロパティ値は、javascript での計算全体で使用され、途中で何度もコピーされます。したがって、値を FixedPoint* 型のプロパティにすることはできないと思います。私は正しいですか?
c++ - QQuickItemに異なる色で複数の点を描く
カスタムで多くのポイント (>1.000.000) と異なる色でプロットをレンダリングしたいQQuickItem
。
後でこれらのポイント (座標と色の間のフェード) をアニメートしたいので、これにQQuickPaintedItem
は十分な速度ではないと思うので、 のupdatePaintNode
インターフェイスを使用する必要がありますQQuickItem
。
問題は、各ポイントの色を設定することです。Point a ごとに作成し、QSGGeometryNode
Geometry と ColorMaterial を追加する必要がありますか? または、より速い解決策はありますか?
よろしくお願いします
c++ - QQuickPaintedItem で座標を変換する
QQuickPaintedItem
ユーザーがペイントされた画像をパンおよびズームできる場所から派生したプラグインを作成したいと考えています。
ズームにはメソッドを使用していsetContentsScale
ます。ペイントした画像のアンカーを変換して、パンできるようにします。これに対する解決策はありますか?
挨拶
c++ - QQuickPaintedItem でジェスチャを認識する
私のジェスチャを作成したいQQuickPaintedItem
通常の QWidgets には、メソッドがありますgestureEvent(QGestureEvent *event)
(こちらを参照)
しかし、これらのイベントを QQuickItem で取得するにはどうすればよいでしょうか?
opengl - QQuickItem 上の Qt Rectangle が正しくレンダリングされない
QQuickItem を使用して QT5 で痛い問題があります。QML で純粋な openGL を使用して 3D モデルを描画する必要があったため、独自のカスタム QQuickItem を作成しました。これまでのところ、すべてが期待どおりに機能しています。3D モデルは QML で美しく表示されています。
この問題は、カスタム QQuickItem の横にある同じ QML に単純な Rectangle を配置したいときに発生します。3D モデルが表示されなくなりました。何故ですか?
これが私のカスタムクイックアイテムコードです:
そして、これが私のQMLで、3Dモデルの上に小さな長方形があります:
少なくともこの問題の説明や提案を誰かに教えてもらえますか?