1

マウスで画像の一部を選択するサイズ変更可能な選択ツールを作成したいと考えています。QTでこれを達成したいのですが、基本的な選択を作成するためにQRubberBandが機能しています。

次のステップは、その選択範囲をマウスでサイズ変更できるようにすることです。したがって、コーナーをクリックしてドラッグすると、それに応じてサイズが変更され、選択範囲内をクリックしてドラッグすると、選択範囲が移動するはずです。

今私の考えは、QRubberBand をサブクラス化し、paintEvent メソッドをオーバーライドして、隅々に大きなドットをペイントし、それらのドットでマウスイベントを実行することです。しかし、誰かがこれを行うためのよりスマートな/より良い方法を持っているかどうか疑問に思っていましたか?

これについていくつかのアイデアを聞きたいです。前もって感謝します。

4

2 に答える 2

0

Qt 画像およびベクター ビューアー用の任意のインタラクティブなオーバーレイ グラフィックスの一般的なフレームワークを実装しました。https://github.com/dov/Qviv/tree/Lasso/Lassoのブランチ Lasso を参照してください。でコンパイルしてsconsから実行testLassoしてテストできます。現在、このテストは移動可能な半透明キャリパーを実装していますが、必要なグラフィックに簡単に変更できます。Lasso サブディレクトリは現在、Qviv プロジェクトの残りの部分から完全に独立していることに注意してください。

于 2013-05-05T15:26:00.583 に答える
0

私は前に似たようなことをしました。QWidget の代わりに QGraphicsView を使用したため、開発がはるかに簡単になりました。QGraphicsItem を「ラバーバンド」として使用しました。QGraphicsView はすでに多くのユーザー インタラクションを処理しているため、QWidget::mouseMove() イベントなどの再実装に煩わされる必要はありませんでした。さらに、QGraphicsView の最適化により、パフォーマンスは QWidget よりもはるかに高速でした。

お役に立てれば

于 2011-04-20T11:46:05.920 に答える