問題タブ [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++ - Qt4 の MainWindow に QGraphicsView が表示されないのはなぜですか?
これはおそらく非常に明白なことですが、私は Qt が初めてで、理解できません。ボタンが 1 つある単純な MainWindow があります。そのボタンがクリックされたら、QGraphicsScene を作成し、いくつかの行を追加して、それをウィンドウに表示します。ただし、このコードをウィンドウで実行すると表示されません。
しかし、これを QApplication として実行すると、問題なく表示されます。私は何が欠けていますか?
MainWindow のコードは次のとおりです。
}
qt - QGraphicsSceneレポートアイテムの移動イベントを取得する方法
QtのQGraphicsSceneは、すぐに使用できるいくつかの優れた機能を提供します。ユーザーはオブジェクトを選択して移動できます。
もう1つ必要なのは、ユーザーがオブジェクトの移動を終了したときに通知を受け取ることです。マウスの移動、プレス、リリースなどの低レベルのイベントがありますが、すでに存在する機能(オブジェクトの移動)を再実装したくありません。
http://doc.trolltech.com/4.2/qgraphicsitem.html#itemChangeメソッドはそのように見えますが、ユーザーがオブジェクトを移動したときに呼び出されません。
Qt4.6を使用しています
このイベントを有効にするには、フラグを設定する必要があります。item-> setFlag(QGraphicsItem :: ItemSendsGeometryChanges、true);
しかし今では、アイテムのコーディネイトが変更されるたびにイベントが発生します。ユーザーが変更を加えた場合にのみイベントを開催したい。
qt - QGraphicsSceneのバックグラウンドでアイテムを使用する
最初にdrawBackground()関数で背景を描画したQGraphicsSceneがあります。ただし、これにはかなりの数の計算が必要であり、かなり遅いことが判明したため、代わりに多数のアイテムを作成しました。これは予想通りのスピードアップでした。
私の質問:これらのアイテムを背景として扱う方法はありますか?それらを背景アイテムとして扱っても問題ありませんか?
ありがとう
qt - QGraphicsView が受け入れたイベント
Qt Graphics View フレームワークを使用してシーンを作成し、複数のビューを同じシーンにアタッチします。これらのビューは 3D openscenegraph シーンを背景としてレンダリングし、2D 図面は一種のオーバーレイです。
OverlayViewport クラス (QGraphicsView を継承) でマウス/キー イベントをインターセプトし、それに応じて 3D シーンをナビゲートしようとしています。以下は、サンプル イベント ハンドラです。
しかし、イベントは常に受け入れられるため、私の 3D シーンのコードは実行されません。isAccepted() チェックを削除すると、コードは常に実行されます。
私が達成したいのは、シーンに選択、ドラッグ vs などの処理をさせ、何もしない (イベントを受け入れない) 場合は、3D 処理を行うことです。
だから、ここに私の質問があります:
1 - 私はここで間違った道を進んでいますか?
2 - ビューがアタッチされているシーンにイベントを転送し、イベントがシーンで受け入れられない場合は処理を行う必要がありますか?
3 - 2 でない場合、どのように進めればよいですか?
よろしくお願いします。
qt - Qt4: スケール不変 qgraphicsitem アウトライン
Qt4 GraphicsView フレームワークを使用していくつかのポリゴンを描画しており、ユーザーが描画をズームインおよびズームアウトできるようにしています。ユーザーがビューのズーム レベル (スケール) を変更すると、ポリゴンが大きくなったり小さくなったりするようにしたいのですが、アウトラインの太さを常に同じにする方法はありますか?
ありがとう!
qt - QGraphicsPathItemのアウトラインへの近接性をテストするにはどうすればよいですか?
特定の点がの輪郭上または輪郭の(x, y)
近くにあるかどうかをテストしようとしています。QGraphicsPathItem
使用するQGraphicsItem.contains()
か.collidesWithItem() / Path()
しないか:ポイントがパスの内部の領域内に含まれている場合もTrueを返しますが、アウトライン上のポイントのみをテストします。どうすればそれを達成できますか?
c++ - QtでGoogleマップのようなタイルスクロールを実装するにはどうすればよいですか?
私は Qt/C++ を使用しており、大規模で複雑な QGraphicsScene を描画しようとしています。多くのオブジェクトを追加すると、パンとズームが不快なほど遅くなります。(もちろん、ここで驚くことではありません)。デバイス座標のキャッシュ (特定のポイントへのパンに役立ちます) や最小限のビューポートの更新などで遊んでみましたが、最終的にはオブジェクトが多すぎます。私がやりたいのは、何らかの方法で UI を制御することからアイテムを非同期的に描画することです。つまり、Google マップと同じように、パンとズームを行い、できるだけ早く描画を追いつきたいのですが、アイテムの描画が完了する前にもう一度パンできるようにしたいと考えています。
私が試みている 1 つの方法は、2 つの QGraphicsScenes を作成することです。1 つは実際のオブジェクトを持っていますが、QGraphicsView にアタッチされていません。他の QGraphicsScene は QGraphicsView に接続されていますが、画面をカバーするサイズのタイル化された QPixmap がいくつかあるだけです。計画では、予備の CPU サイクルを使用して、必要なタイル ピックスマップを更新します。これにより、レンダリングに必要な制御が可能になるようです (したがって、表示されているシーン全体を再レンダリングする際にブロックする必要はありません)。考え?誰かがこれを実装しましたか?
c++ - Qt4: QGraphicsItem の操作中にマウスカーソルを所定の位置にロックする
QGraphicsScene を使用する Qt4 で小さな GUI ユーティリティを作成しています。項目の 1 つは、マウスを動かすと水平面内でマウスを追跡し、修飾キーを押したままにすると、項目の回転を変更できます。アイテムを回転するとき、マウス カーソルを曲線の矢印 (または何か) に変更し、視覚的にその場でロックしたいので、移動するとアイテムに影響しますが、マウス カーソル自体には影響しません。
修飾子を放すと、(以前は見えなかった) カーソルが元の位置に戻ります。これは、後でアイテムがマウスの新しい水平位置に「ジャンプ」するのを防ぐためです。これが私の主な問題です。
次のような恐ろしいことを行わずに Qt4 でこれを実装する方法が本当にわかりません。
- モディファイアが押されたとき、現在のマウス位置を保存します
- カーソルを何もないビットマップに切り替えます
- なんとか元の場所に偽のカーソルを描く(!?)
- 偽のカーソルを削除し、完了したらマウスの位置を元に戻します
誰かがこれを達成するためのより良い方法を考えることができれば、非常に感謝しています. そもそも固定マウス カーソルのアイデア全体に固執しているわけではありませんが、この 1 つの問題を回避するために考えることができる唯一の方法は、それ以外の場合は非常にうまく機能する制御スキームです。
編集:上で概説したがらくたスキームを試してみたところ、プログラムでマウスの位置を移動する際に問題が発生しました。以前に同様のシステムをどこで使用したかをまだ思い出そうとしています。基本的にはロータリーノブでした。それをクリックしてマウスを上下に動かすと、ノブが回転します。マウス ボタンを放すと、ポインターは最初に置いたノブ上の場所に戻ります。
qt - qgraphicsviewのスナップショップを取る
Qt4.5とqgraphicsscene/viewを使用して、ユーザーにビデオを表示しています。「スナップショップを取る」ボタンを提供したいと思います。私が考えているすべてのことをはるかに簡単にする非常に簡単な方法があると確信しています。どうすればこれをエレガントに行うことができますか?
ところで、コードはここにあります:http: //gitorious.org/handy
qt - QGraphicsView と eventFilter
これは2日以上私を悩ませているので、私は尋ねるべきだと思いました. Win7 で Qt 4.5.3 (VC2008 でコンパイル) を使用しています。
MyGraphicsView (QGraphicsView を継承) および MyFilter (QObject を継承) クラスがあります。
MyFilter オブジェクトをイベント フィルターとして MyGraphicsView にインストールすると、マウス イベントは MyGraphicsView に配信された後に MyFilter に配信されますが、Key イベントは MyGraphicsView に配信される前に MyFilter に配信されます。
2 番目のケースでは、MyFilter オブジェクトをイベント フィルターとして MyGraphicsView->viewport() (標準の QGLWidget) にインストールします。マウス イベントは MyGraphicsView に配信される前に MyFilter に配信されますが、Key イベントはMyGraphicsViewにのみ配信されます。 .
イベントは、実際のオブジェクトに配信される前にイベント フィルターに配信されるはずですが、なぜそうなるのでしょうか? この注文を確実にするにはどうすればよいですか?
前もって感謝します。よろしくお願いします。