問題タブ [qgraphicspixmapitem]
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.
qt - QGraphicsItem : 左上隅ではないアイテムの原点をエミュレートする
私のアプリケーションは Qt を使用しています。
QGraphicsPixmapItemを継承するクラスがあります。
これらのアイテムに変換 (回転など) を適用する場合、アイテムの原点 (またはピボット ポイント) は常に左上隅になります。
たとえば、アイテムの位置を設定するときに、実際にピックスマップの中心が変更されるように、この原点を変更したいと思います。
または、回転を適用する場合、回転の原点はピックスマップの中心になります。
私は Qt で箱から出してすぐにそれを行う方法を見つけていないので、次のようにitemChange()を再実装することを考えました:
Qtのドキュメントでは、アイテムの位置とその変換行列は2つの異なる概念であると述べているため、これでうまくいくと思いました。
しかし、それは機能していません。
何か案が ?
qt - qt - QGraphicsScene で特定のアイテムをキャッチする方法
私の中にはたくさんのものがありますQGraphicsScene
。チェス盤を作成していて、グラフィックスシーンを使用している状況です。だから、QGraphicsScene
たくさん持っていQGraphicsPixmapItems
ます。さて、これでどうやって王を手に入れることができますか。
更新:
このでは、コインに過ぎないもの (ボード、キング、クイーン、ソルジャーなど) をQGraphicsScene
追加しています。QGraphicsPixmapItems
今、特定のコインを移動したい場合は、キングと言います。どうすれば入手できますか。イテレータを使用するような方法がいくつかあります。しかし、そのQGraphicsPixmapItem
名前で特定のものを見つける方法はありますか。
c++ - Qgraphicspixmapitem のスケーリングと変換
スケーリングと変換中に問題が発生しましたQGraphicsPixmapItem
。初期サイズが 100,100 のグラフィック エディターを作成しQGraphicsItem
、その後、方法でサイズ変更と回転を行っていsetTransform()
ます。
その後、この変換を保存し、これらの変換を使用して画像とビデオを表示しているプレーヤーと呼ばれる別のアプリケーションにこれらを使用していますQgraphicsPixmapItem
。setTransform
.
拡大・縮小・変形してもこのまま鮮明さを保てますか? 使用している画像は2560x1440ピクセルです。どんな助けでも大歓迎です。
コードは次のとおりです。
c++ - キーボードで QGraphicsPixmapItem を移動する
QgraphicsPixmapitem を介して追加されたキャラクターがあり、キーボードの矢印キーを押して移動したいと考えています。しかし、私は方法を見つけることができません。コンパイルエラーが発生します。お願い助けて!
moveship.h (私の QPixmapItem のヘッダー ファイル)
キーの押下を認識するかどうかを確認しているだけです。
keyPressEvent の実装:
私の主なソースファイル:
助けてください :(
編集:
私が得るコンパイルエラーは次のとおりです。
エラー: 'moveship::moveship(QPixmap&)' の呼び出しに一致する関数がありません
moveship * player = new moveship(q);
qt - QGraphicPixmapItem のダブルクリック イベントは、QGraphicsTextItem の送信中に親ウィジェットに移動しません
Qt にメイン ウィジェットがあり、このウィジェットにはQGraphicsView
andが含まれていQGraphicsScene
ます。QGraphicsPixmapItem
シーンでs とsを追加しQGraphicsTextItem
ます。私が扱うメインウィジェットではQWidget::mouseDoubleClickEvent ( QMouseEvent * event )
、私のアイテムはすべてフラグが設定されています:
シーン内のアイテムを移動して選択したいので、ダブルクリックが発生したときにメインウィジェットがそれを処理したいからです。ダブルクリックするとメインウィジェットにQGraphicsTextItem
入りますが、アイテムをダブルクリックすると、ダブルクリックを吸収してメインウィジェットに送信しません。また、フラグが設定されていない場合は、ダブルクリック イベントも吸収します。なぜそれが発生するのですか?s のサブクラスを実装したくなく、既に定義されているメソッドを使用したかったのです。これが私がしていることの写真です:mouseDoubleClickEvent
QGraphicsPixmap
ItemIsFocusable
QGraphicsTextItem
QGraphicsItem
c++ - QGraphicsScene でズームおよび回転した QGraphicsPixmapItem の奇妙な描画動作
QGraphicsScene に QGraphicsPixmapItem があり、QGraphicsView でズームインして回転します。回転がない場合、またはズームインしすぎていない場合はすべてうまく機能しますが、ズームインすると (ピクセルが非常に目立ちます)、回転すると奇妙なことが起こります。画像が期待どおりに見える場合もあれば、ピックスマップが (部分的または完全に) 消えたり、画像に水平方向のグラデーションが表示される場合もあります (画像が回転しても水平のままです)。
最初の画像は、別のグリッド (線の集まり) が上に配置されたチャート (色のグラデーションがあってはなりません) です。2 番目の画像は、私の最小限の例 (以下) からのもので、ピックスマップが部分的に欠落していることを示しています (ショットはピックスマップの端から遠く離れています)。
以下は、私が見ているもののほとんどを示す簡単な例です。
これを囲む他のファイルは、画像を含むリソース ファイル、UI に View を保持する QMainWindow クラス、およびメイン ウィンドウ クラスを実行する main です。これらはすべてGithub プロジェクトで利用できます。
マウスのスクロールホイールでズームイン、矢印キーで回転を再現(マウスでパンも可能)。十分にズームインして回転すると、ピックスマップは一部の角度で (部分的または完全に) 消えます。この例の勾配を再現することはまだできていませんが、これらは同じ問題の別の兆候にすぎないのではないかと考えています。
変換を SmoothTransformation に設定し、renderHint を Antialiasing と HighQualityAntialiasing の両方に設定しようとしましたが、どちらも大きな効果はありませんでした (アンチエイリアシングは高ズームでジャギーを滑らかにします)。さらに、QGraphicView、QGraphicsScene 関連の描画で多くのフラグを切り替えようとしました。これがなぜ起こっているのか、または私がそれに対処しようとすることができる理由を誰かが知っていますか?
Qt 4.8.2 と 10/18/16 に Qt の現在の安定版としてダウンロードした Qt 5.5.1 の両方でこの問題を確認しました。