問題タブ [qtquick2]
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.
qt - QML - コンポーネントのグローバル位置の追跡
オブジェクトのグローバルな位置 (またはその祖先の 1 つとの相対位置) を追跡し、それを他のアイテムの位置にバインドしたいと考えています。
私は次のように使用することを考えてmapFromItem
いました:
このアプローチの問題は、mapFromItem
が一度評価され、その引数の 1 つが更新されても更新されないことです。さらに、マッピングは、コードで追跡できないオフセットによって変更された新しい位置を返すことがあります (しかし、それは手元の問題ではありません)。
私の 2 番目のアイデアは、オフセットを再帰的に合計する関数を実装し、提供された祖先 ( のようなものcalculateOffsetFrom(ancestor)
) で停止することによって、グローバル位置を計算することでした。onXChanged
それでもこれは単なる関数であり、祖先の位置が変更されたときに再評価されることはありません (その関数で、呼び出しをそれぞれのシグナルにバインドしない限り)これは汚い解決策のように思えます)。
最後に、追跡するオブジェクトにプロパティを追加してから、それらにバインドします。
しかしまあ...ええ...これはまったくスケーリングせず、醜いものです。
この問題をよりクリーンな方法で解決する方法を知っている人はいますか?
編集:
私に関する限り、この場合はアンカーを使用できません。SomeObject
コンポーネントは、ある点から別の点へのベジェ曲線を描くカスタム コンポーネントです (2 つの を接続しますTrackedObjects
)。そのためには、座標の違いが必要です。私が正しければ、アンカーはそれらの間の距離を計算する方法を提供しません。
qml - Qt Quick 2 Scene Graph は EGLFS の vsync に同期しますか?
Qt 5.1 の Qt Quick 2 について勉強しています。カッコイイです。ただし、Scene Graph 機能についてはわかりません。Flickable を作成し、そこに大量の画像を配置し、これを EGLFS バックエンドを備えた組み込みデバイスの QQuickView に表示する場合、シーン グラフを使用していますか?
はいの場合、ティアリングが表示されるのはなぜですか? シーン グラフは VSynced にする必要がありますか?
そうでない場合 - Flickable で使用するにはどうすればよいですか? それとも、すべてをゼロから実装する必要があるということですか?
私のアプリは基本的に、無限に生成された画像を閲覧できます。
qt - QML - MouseArea - onPositionChanged の伝播
MouseArea
の positionChanged イベントを基になるイベントに伝播することは可能ですか?
最上位の既存のシグナルハンドラーにtoを設定するだけでなく、 mouse.accepted
toを設定しようとしました。どちらも機能しませんでした (ただし、ドキュメントには、 、 などのイベントのみを中継すると記載されているため、機能しないことに驚かないでください)。false
MouseArea
propagateComposedEvents
true
propagateComposedEvents
clicked
doubleClicked
pressAndHold
qtquick2 - db.changeVersion が期待どおりに機能しない
Ubuntu Touch のアプリで DB をアップグレードしようとしています。QtQuick.LocalStorage 2.0 を使用しています。
db.changeVersion を呼び出すと機能しますが、アプリを再起動するまで db.version は変更されません。
アプリを再起動せずに新しい db.version を取得するにはどうすればよいですか?
javascript - アニメーション付きのリピーターに要素を追加する
作成時に要素がアニメーション化されるリピーターがあります。
前の要素のアニメーションが終了した後に要素をモデルに追加すると、すべてが機能します。しかし、前に要素を追加するとうまくいきません。たとえば、弾丸を発射する銃を持っていた場合、弾丸のアニメーションが終了するまで待っていれば、すべてが機能します。しかし、最初の弾丸が終わる前に別の弾丸を撃ちたい場合、最初の弾丸が消えて、2 番目のアニメーションだけが表示されます。
すべてのアニメーションを表示するにはどうすればよいですか?
qt - QtQuick 2.0 のプロパティに基づいて ListModel の特定の要素を見つける
objectIdListModel
ロール (整数で一意) があります。モデルにクエリを実行して、特定の objectId を持つ要素の他のプロパティを見つけたいと考えています。どうやってやるの?
qt - QML - 祖先へのアドレス指定
実行時に動的に作成されたコンポーネントで満たされるコンテナがあります。これらの要素 ( と呼びましょう) のそれぞれには、動的に作成されるDynamicObject
サブ要素 ( ) のツリーがあります。Node
さらに、Node
コンポーネントは相互に入れ子にすることができます (ツリー構造のように)。
コンテナのid
パラメータを に設定し"main_container"
、すべてのパラメータDynamicObject
を に設定し"dynamic_object"
ます。
main_container
ネストされたNode
要素のいずれかからアドレスを指定しようとすると、すべて正常に機能します。問題は、ルート以外のもの (の直接の子孫/子)dynamic_object
からに対処しようとしたときです。結果は次のとおりです。Node
dynamic_object
ReferenceError: dynamic_object が定義されていません
私の質問は次のとおりです。この動作の背後にある原因は何ですか? それらのオブジェクトが動的に作成されるという事実と関係がありますか? main_container
(私はいつでもに対処でき、qmlコードで静的に宣言されているので、それが私の最初の考えでした)。
コード例: (不足しているものがあれば、コメントで教えてください)