Изобрёл велосипед
:
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)));
}
Вот только мне кажется, что такое простое действие, как изменение масштаба должно делаться проще.
Может кто подскажет как.