Qt でピックスマップを表示してズームできるようにしたいのですが、QScrollArea 内で QWidget を使用していますが、領域の ScrollBars が機能していません。画像をズームすると画像が大きくなりますが、何もありません。移動できるスクロールバー、いくつかのコードをお見せしましょう:
ウィジェットを宣言する方法は次のとおりです。
_scroll = new QScrollArea(_frame);
_image_widget = new QImageWidget(_scroll);
_scroll->setBackgroundRole(QPalette::Dark);
_scroll->setWidget(_image_widget);
_scroll->setWidgetResizable(true);
_frame は穴を表示する領域で、_image_widget は QWidget から継承している QImageWidget のオブジェクトです
これを使用しない場合:_scroll->setWidgetResizable(true);
画像が小さすぎます
そして、これが私がZoomを扱う方法です:
void QImageWidget::paintEvent(QPaintEvent *ev) {
QPainter p(this);
if(pixmap() != NULL){
int w = pixmap()->width();
int h = pixmap()->height();
QPixmap map = pixmap()->scaled(w*zoom,h*zoom,Qt::KeepAspectRatio);
p.drawPixmap(0, 0, map );
}
}
void QImageWidget::wheelEvent ( QWheelEvent * e )
{
int x = e->pos( ).x();
int y = e->pos( ).y();
if (e->delta() > 0)
zoom *= 2;
else
if(zoom > 1)
zoom /= 2;
}
問題は、私が言ったように、ズームすると画像が大きくなりQScrollArea
続け、ズームを続けると、ズームは機能しますが、スクロールバーがないため、他の部分を見ることができます画像。
私が理解できない場合は教えてください!ありがとう !