問題タブ [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.
c++ - QGraphicsViewに合うようにQGraphicsItemをズームします
私は誰かがウィンドウのサイズに合うようにQGraphicsView
電流をスケーリングできるようにするを作成しようとしています。QGraphicsItem
QGraphicsView
カスタムバージョンを作成するためにオーバーライドQGraphicsItem
し、いくつかのメソッドを実装して、スケーリングされた量を認識しました(これは常に元のバージョンに比例するため、スケール係数は1つだけです。幅と高さは同じです)。
したがって、scaleFactor
セッターには次のものがあります。
そして、私のメインフォームでは、ボタンに次のものがあります。
item
それらの1つはどこにありますかImagePixmapItem
。
これは最初はうまく機能します-私の画像はビューポートよりも大きく、ウィンドウに合うように(少なくとも幅に関して)うまく縮小されます。ただし、もう一度ボタンを押すとscaleFactorX
、item
幅と高さが同じ値に戻ります。
boundingRect
変換後の画像を変更できますか?そうでない場合は、どうすればよいですか?
qt - QPainterPath の成長/展開
QPainterPath
Photoshop の Selection > Grow... (または Expand...) コマンドのように、それを取得して展開する方法はありますか?
QPainterPath
返された fromを取得し、QGraphicsItem::shape
それを a の基礎として使用したいと考えていQGraphicsPathItem
ます。しかし、私は形状を特定の量、たとえば 10 ピクセルだけ拡大したいと考えています。次に、この拡張された形状の周りに細い輪郭を描きます。
の幅を 20 に設定することで、これを行うことができます(内側の半分と外側の半分を描画QPen
するため、希望の幅 * 2)。QGraphicsPathItem
これにより、正しい外側の形状が得られますが、醜い太い線が表示されます。この形状を取得して細い線で輪郭を描く方法は (私にはわかりますが) ありません。
クラスは有望に見えますQPainterPathStroker
が、私がやりたいことを成し遂げることができないようです。
c++ - QGraphicsItem をそのままにしておくように強制する
でQGraphicsScene
満たされた がQGraphicsItems
あり、ユーザーはパンやズームを行ってさまざまな をすべて調べることができますQGraphicsItems
。ただし、 QGraphicsTextItem
常に画面の左上に表示されるラベルが必要です。ズームを無視するのは簡単ですがsetFlags(QGraphicsItem::ItemIgnoresTransformations)
、位置を強制的に左上に固定する方法はまだわかりません。自分のレーベルを同じ場所に "浮かせる" ための最良の方法は何ですか?
qt - 変換後の QGraphicsItem のサイズを見つける方法
私のpyqtコードの一部でQGraphicsItemをスケーリングしています。コードの別のセクションで self.rect.adjusted(0, 0, 0, 0) を呼び出すと、変換前の寸法が返されます。私の質問は、変換後の寸法をどのように見つけることができますか?
qt - QGraphicsObject のシーンイベントで位置の計算を実行できないのはなぜですか?
QTouchEvents で QGraphicsObject を実装し、sceneEvent 関数を再実装しました。
私の問題は、アイテムに触れると、アイテムの右上隅がタッチポイントになることです。タッチしたポイントを内側にオフセットしたい。ただし、これを行うと、一度に 1 つのアイテムしか移動できません。
qt - QGraphics シーンのズームインとズームアウト
ここでも、グラフィック シーンで QGraphicsPixmapItem をズームインおよびズームアウトする方法について心配しています。これを行うための直接的な方法を探しましたが、グラフィックス シーンやピックス マップで見つけることができませんでした。誰かがこれで私を助けることができますか?QGraphicsPixmapItem を拡張し、このためのメソッドを実装する必要がありますか?
助けてくれてありがとう。本当に感謝しています。
〜タランガ
qt - QGraphicsSceneの拡張
拡張QGraphicsItem
されたに追加されるように拡張していQGraphicsSene
ます。拡張アイテムをシーンに追加し、シーンをグラフィックスビューに通常の方法で追加すると、画像が表示されますが、次のように画像を追加すると、表示されません。誰かがこれをチェックして問題を教えてください。
ヘッダ
ソース
主要
c++ - Qt: 長方形ではない QWidget を重ねることはできますか?
長方形以外のカスタムQWidget
(例: 円形のボタン) が複数ある場合、それらを重ねることはできますか?
ウィジェットのどの部分が不透明であるかを Qt に知らせる方法がないように思われるため、マウス イベントは正しいものに配信されますQWidget
(Qt は、各ウィジェットがその境界矩形を占有していると想定しているようです)。
代わりにこれらのウィジェットをQGraphicsItem
s にする必要がありますか?
c++ - QGraphicsItem 挿入順
QGraphicsItem の整理に QGraphicsScene + QGraphicsView を使用するプロジェクトがあります。すべてのグラフィック アイテムは移動および選択可能です。
問題は、シーンに新しい QGraphicsItem を挿入し、このアイテムが前のアイテムよりも大きい場合、マウスで選択できないことです。
Qtのドキュメントから:
デフォルトでは、すべての兄弟アイテムは挿入順に積み上げられます (つまり、追加した最初のアイテムは、次に追加するアイテムの前に描画されます)。2 つのアイテムの Z 値が異なる場合、Z 値が最も高いアイテムが上に描画されます。Z 値が同じ場合は、挿入 > 順序によって重なり順が決まります。
質問、グラフィック アイテムの挿入順序を変更するにはどうすればよいですか?
QGraphicsView の mousePressEvent をサブクラス化し、stackBefore() メソッドのヘルプを使用して挿入順序を変更しようとしています。すべてのアイテムが混ざり合って重なり合っている場合、必要なアイテムを選択するために多くのクリックを行う必要があります。
c++ - QGraphicsScene に何も表示されない
qgraphicsview qgraphicsitem を使用して、チェスのようなシーンを作成しようとしています。
公式の例に従って作成しようとしていますが、何も表示されません。コードはほとんど同じです。最初に、私は自分の Cell クラスを疑問に思います。だから私は四角形を描こうとしています。しかし、何も表示されません。以下は私のコードです。誰かが私を助けてくれますか。Windows 7 で Qt 4.7 を使用しています
Cell.h
セル.cpp
view.h
ビュー.cpp
メインウィンドウ.h
メインウィンドウ.cpp
main.cpp