問題タブ [qgraphicsitem]

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 に答える
704 参照

qt - QRubberBand Selection - 選択したアイテムの周りの点線を止める

QGraphicsView.setDragMode()ラバーバンド選択に設定することで有効になっているデフォルトの QRubberBand を使用してアイテムを選択しています。これは問題なく動作しますが、アイテムが選択されると、境界四角形の周りに灰色の点線が表示され、これを防ぐ方法があるかどうか疑問に思っていましたか?

0 投票する
2 に答える
419 参照

graphics - 膨大なアイテムがある場合のQtGraphicsViewFrameworkの効率の問題について

最近、QT GrapohicsViewFrameworkを使用して新しい視覚化ソフトウェアを開発しました。ソフトウェアでは、ポイントとラインを含め、約1万以上の多くのアイテムを表示する必要があります。しかし、表示の過程で、プールの効率があり、多くの場合、応答がありません。ズームしたり、シーンの位置を削除したりするときは、スパンを待たなければならず、耐え難いです。それで、それが正常であるかどうか、そして状況についての効率を改善する方法を知りたいです。ありがとう 。

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

c++ - GraphicsPolygon 内の GraphicsItem の描画

GraphicsItem を継承する Node というクラスを作成しました。BLock と呼ばれる別のクラスも作成し、QGraphicsPolygon から継承します。

各ブロック内の異なる位置にノードを描画するにはどうすればよいですか?

ブロック.cpp

0 投票する
3 に答える
3357 参照

qt - mousePressEvent()をQGraphicsItemsのグループに伝播するにはどうすればよいですか?

QtGraphicsViewフレームワークを使用するプログラムを作成しています。他のクラス(または他のサブクラス)QGraphicsItemを含むクラスにサブクラス化しました。QGraphicsItemこのクラスは、含まれているQGraphicsItem;の親です。アイデアは、複合オブジェクトを操作することです。

ドキュメントから、それは私が達成しようとしていることの矛盾のようです:

  • 呼び出すignore()mousePressEvent、オブジェクトが移動できなくなります。動かしたい。
  • 呼び出すとaccept()mousePressEventイベントが子オブジェクトに伝播されなくなります。一部の子オブジェクトは、マウスイベントに反応する必要があります。

どうすればこれを機能させることができますか?

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

c++ - qtのイベントでアイテムのプロパティをメインウィンドウに渡す

qgraphicsview内にいくつかのqgraphicsitems(qgraphicsitemsから継承されたクラス)を配置するqmainwindowがあります。これらのアイテムには、qgraphicsitems からも継承された個人的なアイテムが含まれています。これらのアイテムは、マウス プレス イベントをリッスンします。これらのアイテムには、カスタム ID などの独自の他のデータ プロパティもあります。

これらのアイテムからメイン ウィンドウにマウス イベントを渡すことができます。クリックされたアイテムの上記のカスタムIDをイベントとともにメインウィンドウに渡す必要があるため、メインウィンドウはクリックされたアイテムに合わせて外観を変更できます。

これを行うにはどうすればよいですか??

0 投票する
2 に答える
1329 参照

qt - Qtで木を描く

Qtで木を描く必要があります。

私はノードを使用QGraphicsSceneQGraphicsItemて、ノードを使用することを考えていました。しかし、ノードを移動可能にしたいので、ノード間の線をどのように最適化するのでしょうか。

助言がありますか ?

どうも。

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

qt - QGraphicsItem - マウスカーソルをたどる

私はこれにアプローチする方法にこだわっています。シーン内に QGraphicsItem があり、シーンからこの子にホバー イベントを渡しています。移動イベントが発生している間 (私はマウス トラッキングをオンにして mouseMoveEvent を使用しています)、別の QGraphicsItem をカーソルに追従させたいと考えています。

衝突検出、ドラッグアンドドロップなどは必要ありません。カーソルをたどるアイテムだけです。私が考えることができる唯一の2つの方法は...

  1. マウスが動いている間、マウスの位置に新しい QGraphicsItem を描画します。シーンをクリアし、すべてを再描画して、新しい位置を上に描画する必要があります。
  2. 何らかの方法でアニメーション フレームワークを使用し、マウスが移動するたびに QGraphicsItem をアニメーション化して、1 ミリ秒で新しいマウス位置に移動します。

私はおそらくこれを考えすぎているか、これを行う別の方法に気づいていません...何か提案はありますか?

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

qt - QGraphicsItem :: prepareGeometryChange()はどのように機能しますか?

Qtのドキュメントによると、「ジオメトリ変更のためにアイテムを準備します。アイテムの境界を変更する前にこの関数を呼び出して、QGraphicsSceneのインデックスを最新の状態に保ちます。prepareGeometryChange()は、必要に応じてupdate()を呼び出します。」

私が理解していないのは、QGraphicsItemが境界の四角形がいつ変更されたかをどのように認識し、update()をいつ呼び出すかをどのように認識しているかです。prepareGeometryChange()を呼び出してから境界矩形を変更した後、自分でupdate()を呼び出すことになったことはありますか?

千里眼の方法のように見えるものについての洞察を大いに感謝します。

0 投票する
3 に答える
15303 参照

c++ - QGraphicsItem の画面位置を見つける

ユースケース:これはかなり一般的な問題です。QMdiArea を持つ通常の QMainWindow には、QGraphicsView を持つ mdiChild が存在します。このビューは、内部に QGraphicsItems を含む QGraphicsScene を表示します。これらの項目の 1 つを右クリックすると、その項目が選択 (フォーカス) され、コンテキスト メニューが開きます。このメニューは、画面座標に便利に配置されていますQGraphicsSceneMouseEvent::screenPos()。これは期待どおりに機能しています。

ユーザーがキーを押したときに同じコンテキスト メニューを表示したいと思います (Qt::Key_Menu など)。選択された (フォーカスされた) アイテム、シーンを表示するビューを知っています。

だから私の質問は:
シーン内の QGraphicsItem の可視表現の位置 (グローバル、スクリーン座標) を取得する正しい方法は何ですか?

機能していないものは次のとおりです。

ドキュメントには次のように書かれています: ビューポートのどこにアイテムがあるか知りたい場合は、アイテムで QGraphicsItem::mapToScene() を呼び出してから、ビューで QGraphicsView::mapFromScene() を呼び出すことができます。
まさに私がしていることですよね?


ドイツのフォーラムで、次のことを示唆するスレッドに出くわしました。

またはさらに良い:

それを使用すると、私の質問に対するより一般的な答えが得られる可能性があります...

0 投票する
2 に答える
569 参照

qt - mouseReleaseEvent RightClickから起動されたQDialogを閉じると、空白のコンテキストメニューが表示されます

これは、QGraphicsItemのmouseReleaseEventまたはQContextMenuのいずれかから発生するすべてのQDialogで発生しました。問題が何であるかわかりません-コードは非常に単純です。

[OK]または[キャンセル]を使用してダイアログを閉じるとすぐに、イベントがトリガーされた場所に空のコンテキストメニューが表示されます。

ここに画像の説明を入力してください

空白の項目は、QDockWidgetを非表示にするか表示するかを制御しているようです。たくさんのグーグル検索が私を立ち往生させました。

編集-これは、マウスの右ボタンが使用されている場合にのみ発生するようです。