0

わかりました。基本的に、グラフィックスシーンにランダムにグラフィックスアイテムを配置しました。ウィンドウを開いて、これらのアイテムを表示します。ウィンドウのサイズを変更するとき、このアイテムを同じサイズのままにしておきますが、ウィンドウサイズに比例して再配置します。これを行う方法は、グラフィックビューをサブクラス化し、サイズ変更イベントが発生すると、サイズ変更オブジェクトをグラフィックシーンオブジェクトに送信することでした。その後、私は次のようなことをすることができました:

double scaleX = double(event->size().width())/double(event->oldSize().width());
double scaleY = double(event->size().height())/double(event->oldSize().height());

次に、これらの値を使用してこれを行いました。

derivedPointItem->setPos( derivedPointItem->pos().x() * scaleX,
                          derivedPointItem->pos().y() * scaleY );

これは問題なく機能しますが、ウィンドウのサイズを実際に小さくしたり大きくしたりすると、正しくありません。問題は、graphicsscenerectとgraphicsviewrectが同じか何かではないことだと思います。さらに、ウィンドウサイズにサイズ変更する背景があります。

void roiwindow::drawBackground( QPainter* painter, const QRectF& rect )
{
    this->setSceneRect(0,0,rect.width(),rect.height());
    painter->save();
    painter->drawImage(rect, *refimage);
    painter->restore();
}

これは私が書いているプログラムで必要なものです。また、サイズ変更が機能するかどうかを確認できます。基本的に、背景をポリゴンに設定してから、ポリゴンのエッジにポイントを配置することができます。画像のサイズを非常に大きくしたり小さくしたりすると、ポイントは少し近くなりますが、ポリゴンの頂点上になくなります。誰かがこれを行うためのより良い方法またはそれを修正する方法を知っていますか?ありがとう。

編集:これが私が取り組んでいるプロジェクトです:

dropbox.com/s/myxi8kvdl7x9ye2/ncorr.tar.gz

4

1 に答える 1

1

この方法は実際に機能します(ただし、これが最適な方法かどうかはわかりませんが...)。とにかく、setPos()関数が原因でコーディングエラーになってしまいました。私のプログラムのsetPos()関数は、画像の中心ではなく左上隅の座標を指定することで機能しました。これにより、いくつかのエラーが発生しました。

于 2012-06-07T18:35:17.530 に答える