我想在 Qt 上显示一个像素图并使其能够缩放,我在 QScrollArea 内使用 QWidget,但该区域的 ScrollBars 不起作用,当我放大图像时,图像变大,但没有滚动条,这样我就可以移动了,让我给你看一些代码:
这是我声明 Widgets 的方式:
_scroll = new QScrollArea(_frame);
_image_widget = new QImageWidget(_scroll);
_scroll->setBackgroundRole(QPalette::Dark);
_scroll->setWidget(_image_widget);
_scroll->setWidgetResizable(true);
_frame 是我应该显示洞的区域,_image_widget 是 QImageWidget 的一个对象,它继承自 QWidget
如果我不使用这个:_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
然后当我继续缩放时,缩放正在工作,但没有滚动条,所以我可以看到的另一部分图片。
如果我不能理解,请告诉我!谢谢 !