問題タブ [qgraphicsview]
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++ - QGraphicsItem はマウス ホバー イベントを受け取りません
派生要素QGraphicsView
を含むから派生したクラスがあります。QGraphicsItem
これらの要素の上にマウス カーソルが置かれるたびに色が変わるようにしたいので、hoverEnterEvent
(およびhoverLeaveEvent
)を実装しました。
ただし、このイベント ハンドラー コードは実行されません。マウス トラッキングを明示的に有効にしました。
それでも、運が悪い。私は何を間違っていますか?
qt - QGraphicsView上にウィジェット(ボタンなど)を描画する
QGraphicsView上にQButtonsやLineEditsなどのインタラクティブウィジェットを描画するにはどうすればよいですか?たとえば、QGraphicsViewで画像を表示する画像編集アプリで画像上の領域を選択しましたが、この領域に名前を付けたいと思います。
したがって、この長方形の選択範囲の下に、線の編集と2つのボタン(十字と目盛り)を配置したいと思います。これらをどのように描くのですか?
サンプルコードはかっこいいでしょう!
c++ - QGraphicsViewフレームワークとパフォーマンスでの多くのポインターキャスト
QGraphicsSceneとQGraphicsItemの便利な関数のほとんど(items()、collidingItems()、childItems()など)はQListを返すため、多くのqgraphicsitem_castまたはstatic_castを実行する必要があり、QGraphicsItem :: Type()はシーンにさまざまな種類のアイテムがたくさんある場合は、実際のアイテムを入手してください。多くのサブクラスキャストを行うことは望ましいコーディングスタイルではないと思いましたが、この場合、他に実行可能な方法はないと思いますか、それともありますか?
上記のqgraphicsitem_castは、正しいタイプがすでに検証されているため、static_castに置き換えることができます。これらを常に行う場合(非常に動的なシーン)、多数のキャストは通常のif-else評価を超えてパフォーマンスに影響しますか?
c++ - Dialogを閉じた後、埋め込まれたQGraphicsViewは非表示になりません
QDialogを、showNormalとshowFullscreenのモードで呼び出します。通常モードでは、すべて正常に動作します。キーイベントを使用すると、ダイアログは期待どおりに閉じます。フルスクリーンでは、キーイベントの後、ダイアログは閉じますが、QGraphicsViewはトップのままになります。私が試したすべてのこと(ビューを閉じる/更新するなど)は失敗しました。上のビューsta。
たぶん私の構造は問題を解決するのに役立つでしょう:
これにより、GraphicsWidgetDialogという名前のQDialogが呼び出されます。
これはGraphicsWidgetDialogの定義です
GraphicsWidgetは、QGraphcisViewとSceneを含むウィジェットです。
keyPessEventで、closeEvent()を発行します。
何か案が?
c++ - QGraphicsItemGroup を使用したイベント
私のアプリケーションでは、項目を 1 つの項目にグループ化するために QGraphicsItemGroup を使用したいと考えています。
イベントをキャッチしたいとき、イベントは一緒にマージされますが、特定のイベントを特定の子で処理したいので、少し遊んで、それを使用するかどうかはわかりません。
どうすればこれを達成できますか?
qt - Qt Graphics View Framework でカスタム レイヤーをサポートするにはどうすればよいですか
Qt のグラフィック ビュー フレームワークは非常に強力ですが、カスタム レイヤーをサポートする方法が見つかりませんでした。Qt には QGraphicsScene::ItemLayer がありますが、QGraphicsScene はすべてのアイテムをこのレイヤーにレンダリングします。Illustrator や CorelDraw のように複数のレイヤーでアイテムを管理したい。現在のレイヤー内のすべてのアイテムのみがイベントを受け取り、選択されるか、キー フォーカスを取得します。他のレイヤー (現在のレイヤーではない) は、すべてのシーン イベントを受け取りません。レイヤーを使用する最大の理由は、多数のアイテムをより明確にカタログ化できることです。また、すべてのレイヤーのアイテムにイベントを転送する必要がなければ、グラフィックス フレームワークがより効率的になると思います。最後の質問ですが、QGraphicsView はサーバーでスタックされたグラフィック シーンのレンダリングを同時にサポートしていますか? 対応していれば、「カスタムレイヤー」はこの方法で解決できると思います。
qt - QGraphicsScene でビデオを使用する最良の方法
現在、QGraphicsProxyWidget を使用して QGraphicsScene 内で Phonon VideoWidgets を使用しています。
ビューポートを QGLWidget に設定しています。
ただし、90 度で割り切れない回転など、いくつかの変換をビデオに適用しようとすると、プログラムが大幅に遅くなるため、大きな問題が発生します。
この件に関して見つけたいくつかのことを読んだ後、 QGraphicsProxyWidget 内で VideoWidget を使用すると、大幅な速度低下を説明するソフトウェア変換が行われるように見えることがわかりました。
そのため、ビデオをレンダリングするためのより良い方法があるかどうか疑問に思っていました。
qt - グラフィックスビューフレームワークでQtモデル/ビューフレームワークを使用する方法
私はマッピングアプリケーションに取り組んでおり、テーブル、フォームを使用して、マップ内のグラフィックオブジェクトとしてデータオブジェクトを表示する必要があります。私はPyQtを使用していますが、これはPythonの質問ではなくQtの質問であるため、それほど重要ではありません。
テーブルビューとフォームビューだけが必要な場合、これは簡単ですが、Qt Model/Viewフレームワークを使用するだけです。ただし、グラフィックスビューフレームワークを使用してのみ実際に利用できる機能を提供するには、マップビューが必要です。これは、基本的に、QGraphicsSceneがデータモデルとして機能する独自のモデル/ビューフレームワークです。
これを行うには2つの方法が考えられます。1つは、QAbstractItemModelからサブクラス化された信頼できるモデルから始めて、それをQAbstractItemViewのサブクラスにリンクし、そこからシーン内のQGraphicsItemsを生成および更新することです。QGraphicsItemsとの相互作用を通じて、データアイテムとのユーザーの相互作用と変更を処理する方法がわからないため、これは見苦しいように見えます。
私が考えるもう1つの方法は、QGraphicsSceneを信頼できるデータソースとして扱い、データオブジェクトを各QGraphicsItemの.data()プロパティに格納することです。次に、QAbstractItemModelをサブクラス化し、データストアとしてシーン内のデータにアクセスするように記述します。その後、他のビューはこれをモデルとして使用します。シーン内のデータへの変更をモデルまでどのように伝播しますか?
どちらのアプローチを採用しても、フレームワークでは処理できないギャップがあるようです。モデル/ビューでは、すべての変更がモデルで行われると想定されます。グラフィックビューでは、すべての変更がシーンで行われたと見なされます。
したがって、QAbstractItemModel(authoritative)-> QAbstractItemView-> QGraphicsSceneを選択するか、QGraphicsScene(authoritative)-> QAbstractItemModel->OtherViewsを選択します。なぜあなたはどちらか一方を選ぶのでしょうか、そしてあなたはどんな落とし穴を予想しますか?Qtのツインモデル/ビューフレームワーク間のこのギャップを埋める必要がある人は他にいますか?それをどのように行いましたか?
c++ - QtのGIFアニメーション
次のようなウィジェットに画像を表示するためにQGraphicsView
、クラスを使用しました。QGraphicsScene
同じシーンで.gifアニメーションを表示するにはどうすればよいですか?