我正在使用QGraphicsView缩放标签上的图像.但是当我缩小时,我想为缩小设置一个特定的限制.我使用以下代码
scene = new QGraphicsScene(this);
view = new QGraphicsView(label);
QPixmap pix("/root/Image);
Scene->addPixmap(pixmap);
view->setScene(scene);
view->setDragMode(QGraphicsView::scrollHandDrag);
Run Code Online (Sandbox Code Playgroud)
在轮子事件的插槽
void MainWindow::wheelEvent(QWheelEvent *ZoomEvent)
{
view->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
double scaleFactor = 1.15;
if(ZoomEvent->delta() >0)
{
view->scale(scaleFactor,scaleFactor);
}
else
{
view->scale(1/scaleFactor,1/scaleFactor);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望图像在一定程度上不应缩小.我该怎么办?我尝试设置QGraphicsView的最小大小,但这没有帮助.
谢谢 :)
也许这样的事情会有所帮助:
void MainWindow::wheelEvent(QWheelEvent *ZoomEvent)
{
view->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
static const double scaleFactor = 1.15;
static double currentScale = 1.0; // stores the current scale value.
static const double scaleMin = .1; // defines the min scale limit.
if(ZoomEvent->delta() > 0) {
view->scale(scaleFactor, scaleFactor);
currentScale *= scaleFactor;
} else if (currentScale > scaleMin) {
view->scale(1 / scaleFactor, 1 / scaleFactor);
currentScale /= scaleFactor;
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这个想法是缓存当前的比例因子,如果它小于某个限制,则不会缩小.