wheelEventを使用してQGraphicsViewのズームを実装しています
void View::wheelEvent(QWheelEvent *e)
{
if (e->modifiers().testFlag(Qt::ControlModifier)){ // zoom only when CTRL key pressed
int numSteps = e->delta() / 15 / 8;
if (numSteps == 0) {
e->ignore();
return;
}
qreal sc = pow(1.25, numSteps); // I use scale factor 1.25
this->zoom(sc);
e->accept();
}
}
そしてズームアイテム
void View::zoom(qreal scaleFactor)
{
scale(scaleFactor, scaleFactor);
}
ここでは、ズームアウトをあまり深くしたくありません。スケーリングを特定のポイントに制限するために必要なだけです。ズームアウトを制限する必要があるため、変換ポイントを見つけようとしました
qreal
View::zoomScale() const
{
return transform().m11();
}
しかし、これでズームを制限することはできません。解決策を見つけるのを手伝ってください。