私は誰かがウィンドウのサイズに合うようにQGraphicsView
電流をスケーリングできるようにするを作成しようとしています。QGraphicsItem
QGraphicsView
カスタムバージョンを作成するためにオーバーライドQGraphicsItem
し、いくつかのメソッドを実装して、スケーリングされた量を認識しました(これは常に元のバージョンに比例するため、スケール係数は1つだけです。幅と高さは同じです)。
したがって、scaleFactor
セッターには次のものがあります。
void ImagePixmapItem::setScaleFactor(float sf){
scaleFactor = sf;
this->boundingRect().setWidth(this->boundingRect().width()*scaleFactor);
this->boundingRect().setHeight(this->boundingRect().height()*scaleFactor);
}
そして、私のメインフォームでは、ボタンに次のものがあります。
QRect portRect = ui->graphicsView->viewport()->rect();
double scaleFactorX;
if(portRect.width() <= (item->boundingRect().size().width()))
scaleFactorX =portRect.width() /(item->boundingRect().size().width());
else
scaleFactorX = (item->boundingRect().size().width())/portRect.width();
qDebug("Scalefactor: %4.3f \n", scaleFactorX);
qDebug("item width: %4.3f \n", item->boundingRect().size().width());
qDebug("item height: %4.3f \n", item->boundingRect().size().height());
item->setScaleFactor(scaleFactorX);
item->scale(scaleFactorX,scaleFactorX);
item
それらの1つはどこにありますかImagePixmapItem
。
これは最初はうまく機能します-私の画像はビューポートよりも大きく、ウィンドウに合うように(少なくとも幅に関して)うまく縮小されます。ただし、もう一度ボタンを押すとscaleFactorX
、item
幅と高さが同じ値に戻ります。
boundingRect
変換後の画像を変更できますか?そうでない場合は、どうすればよいですか?