問題タブ [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.

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

qt - QGraphicsView のスクロールと画像のスケーリング/トリミング

QGraphicsView に、スクロールバーやキーボードとマウスでスクロールせずに、常にビューポートのサイズに合わせて拡大縮小 (および必要に応じてトリミング) される背景画像が必要です。以下の例は、ビューポートで画像をスケーリングおよびトリミングするために行っていることですが、エーテルから引き出されたトリミングにランダムな値を使用しています。論理的な解決策が欲しいですか?

QGraphicsView のサイズを変更しても機能する QGraphicsView のサイズに合わせて画像をスケーリングおよびトリミングする方法を知りたいです。1.5 と 19 はどこから来たのですか?

編集; setBackgroundBrush も使用しようとしましたが、スケーリング/クロップされた QImage/QPixmap を使用している場合でも、タイル張りの背景が表示されます。

編集; これまでの私の解決策は、必要な結果を得るために drawBackground() をオーバーライドすることでしたが、それでも、画像を qgraphicsview のビューポート サイズに合わせてサイズ変更する方法を学ぶのには役立ちません。それ以上の回答は大歓迎です。

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

c++ - Qtグラフィックシーンのマウスイベントの伝播

こんにちは私はqtを学んでいて、グラフィックシーンにいくつかのウィジェットを追加するために次のことをしています

私のProductInfoクラスはマウスのリリースを処理し、シグナルを発します

問題は、ウィジェットをシーンに追加した後、マウスリリースイベントを取得せず、productClickedシグナルを出力しないことですが、ウィジェットをメインウィンドウ(シーンではなく)に追加すると、期待どおりに機能します。私は何が間違っているのですか?

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

c++ - カスタムQGraphicsItemsがコンパイルされず、「オブジェクトはプライベートです」エラーが発生します

ここでFredが示すように、カスタムQGraphicsItemボタンを作成しようとしています。彼が投稿したコードはここにあります。

問題は、コードをコンパイルしようとすると、次の2つのエラーが発生することです。

  • /usr/include/qt4/QtGui/qgraphicsitem.h'QGraphicsItem :: QGraphicsItem(const QGraphicsItem&)'はプライベートです
  • /usr/include/qt4/QtCore/qobject.h'QObject
    :: QObject(const QObject&)'はプライベートです

これは、上記のサンプルと基本的に同じコードスニペットです。エラーはクラスの減速にあります。

興味深いことに、ここに示されている他のサンプルは正常に機能します。そのためのサンプルコードはここにあります。

何が悪いのか分かりますか?前もって感謝します。

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

qt - Qt - 子クラスへの無効な変換

Graphics View フレームワークを使用してポリゴンを描画しています。これでシーンにポリゴンを追加しました:

しかし、選択、マウス オーバー インジケーター、その他の同様のものをグラフィックス アイテムに実装する必要があります。そこで、QGraphicsPolygonItem を継承するクラスを宣言しました。

ご覧のとおり、これまでのところ、そのクラスにはあまり取り組んでいません。しかし、QGraphicsPolygonItem を私の GridHex クラスに置き換えるべきではありませんか? これにより、「「QGraphicsPolygonItem*」から「GridHex*」への無効な変換」エラーがスローされます。

私は何を間違っていますか?

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

c++ - Qt-グラフィックビューフレームワークでドラッグアンドドロップ

グラフィックフレームワークを使用して、単純なドラッグ可能なアイテムを作成しようとしています。これまでに行ったことのコードは次のとおりです。

ウィジェットクラス:

DragViewクラス:

DragSceneクラス:

DragItemクラス:

main.cppはウィジェットをインスタンス化し、それを表示します。円をドラッグしようとすると、ドラッグを放した場所に関係なく、アプリは元の円の上に別の円を作成するだけです。DragSceneのdropEvent()のqDebug()は、ドラッグが終了するたびにQPointF(0,0)を表示します。これを機能させるために、自分が何をしなければならないか、どのクラスをサブクラス化する必要があるか、どのメソッドをオーバーライドする必要があるかを正確に理解しようとするのに苦労しています。これに関するドキュメントはあまり詳細ではありません。これを機能させる方法を知りたいのですが、公式ドキュメント(優れていますが、より詳細なものがあれば素晴らしいです)の他に、グラフィックスビューフレームワークについて学ぶためのより包括的なリソースが他にある場合は主題に関する論文)。

編集:

Badgerrのアドバイスに従って、DragScene :: dropEvent()のitem-> pos()をitem->scenePos()に置き換えました。これで、dropイベントがdropサイトに新しい円を作成します。これは、多かれ少なかれ私が望んでいたものです。ただし、元の円はそのままで、ドラッグの進行中は、アイテムはマウスカーソルに追従しません。

QGraphicsSceneDragDropEventのドキュメントには、pos()は、イベントを送信したビューに関連するカーソル位置を返す必要があると記載されています。これは、間違っていない限り、常に(0,0)であってはなりません。変。

フォーラムの投稿で、QDrag :: setPixMap()を使用してドラッグ中に何かを表示できることを読みました。例では、画像がピックスマップとして設定されているのを見ましたが、グラフィックスアイテムと同じようにピックスマップを作成するにはどうすればよいですか。ドラッグすることになっていますか?

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

c++ - QGraphicsItemGroupのサブクラス化

QGraphicsWidgetから派生したクラスを持つシステムがあります。QGraphicsSceneのレイアウトで派生クラスオブジェクトを管理します。ここで、2つ以上のQGraphicsWidgetを含む複合アイテムが必要です。また、そのアイテムをレイアウト内に配置する必要があります。そこで、QGraphicsItemGroupを選択し、このようにクラスを記述します。

sizeHint関数を再度実装しただけです。CompositeItemインスタンスをレイアウトに追加すると、表示されません。これは何が原因でしょうか?どこを間違えたの?

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

c++ - コンテナアイテムの実装

私はTrain Traffic Controllerソフトウェアプロジェクトに取り組んでいます。このプロジェクトでの私の責任は、視覚的な鉄道 GUI を開発することです。

Qtでプロジェクトを実装しています。

今ではQGraphicsLinearLayoutを使用してアイテムを保持しています。各アイテムの座標を計算したくないので、レイアウトを使用しています。

ここまでは、レイアウトを追加するアイテム クラスを作成しました。たとえば、SwitchItem クラスは

現実世界の鉄道スイッチ。各アイテム クラスは、独自のペイントとイベントを担当します。ここまでは順調ですね。

ここで、2 つ以上のアイテムを含むことができる複合アイテムが必要です。このクラスは、それに含まれるアイテムのペイントを担当します。同じレイアウト セル内に 2 つ以上のアイテムを配置する必要があるため、このクラスが必要です。それらを同じセルに配置しないと、レイアウトを使用できません。下の画像を参照してください。

複合アイテム

同じセル内の BlockSegmentItem と SignalItem。

CompositeItem ヘッダー ファイル

このコードはペイントには適していますが、アイテム イベントに関しては問題があります。 QGraphicsSceneは複合アイテムを、レイアウトには適しているがイベントには適していない単一のアイテムのように扱います。各アイテムには独自のイベント実装があるためです (たとえば、SignalItem には特別なコンテキスト メニュー イベントがあります)。

アイテム イベントを個別に処理する必要があります。また、レイアウト用の複合アイテムの実装も必要です。どうすればこのジレンマを克服できますか?

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

c++ - QGraphicsView の更新されたサイズを取得する

私の Qt アプリケーションでは、動的に QGraphicsView を作成し、それらをQGridLayout内に追加しています。グリッド内に最初のビューを追加すると、ビューはグリッド内の使用可能なすべてのスペースをカバーします。次に、2 番目のビューを追加すると、グリッド内に 2 つの同じサイズのビューができます。次に、3 番目のビューを追加すると、グリッド内に同じサイズのビューが 3 つあります。等々。

最初のビューの更新されたサイズを取得するにはどうすればよいですか?

以下は私の試用版ですが、これは機能していないと思います。

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

c++ - QGraphicsView/QGraphicsScene のスケーリングに関する一般的なアドバイス

私のプロジェクトでは、QGraphicsView / QGraphicsSceneのものを使用しています。

私のシーンには、2D グラフィックスを含む領域があります。地域の数は制限されます (20 としましょう)
。ユーザーは 1 つまたは複数の地域を表示することを選択できます。
ユーザーが 1 つの領域を表示することを
選択した場合、シーンに 1 つの領域を表示します。ユーザーが n 領域を表示することを選択した場合、シーンに n 領域を表示します
。同じシーンに n 領域を適合させるためのスケーリング ロジックが必要です。

どうすればこれを達成できますか?

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

c++ - QGraphicsView ensureVisible() と centerOn()

QGraphicsViewでパン/スケールを行う予定です。
だから私はQGraphicsViewのドキュメントを読んで、 ensureVisible()centerOn( )のようないくつかのユーティリティ関数を見ました。
ドキュメントの内容は理解できたと思いますが、実際の例を書くことができません。
問題を理解するためのサンプルコードを書いてください/提案してください.