Изобрёл велосипед

:
void MapoPorFunkcioImpl::setScale(qreal factor){
double q = (double)(qwtPlt->canvas()->paintCache()->size().height())/qwtPlt->canvas()->paintCache()->size().width();
skalo->zoom(QRectF(-5, 0, 100/factor, q*100/factor));// Предварительно увеличиваю масштаб.
}Здесь skalo объект класса QwtPlotZoomer. Вызвать функцию надо после создания окна, т.е. не в конструкторе. Благо у меня конечный автомат. Добавил в инициализирующее состояние.
Приближение:
void MapoPorFunkcioImpl::on_PligrandigiBtn_clicked(){
skalo->zoom(QRectF(skalo->zoomRect().topLeft() + QPointF(1,1),
skalo->zoomRect().bottomRight() - QPointF(1,1)));
}Отдаление:
void MapoPorFunkcioImpl::on_MalpliigiBtn_clicked(){
skalo->zoom(QRectF(skalo->zoomRect().topLeft() - QPointF(1,1),
skalo->zoomRect().bottomRight() + QPointF(1,1)));
}Вот только мне кажется, что такое простое действие, как изменение масштаба должно делаться проще.
Может кто подскажет как.