Функция масштабирования на QWidget - PullRequest
5 голосов
/ 11 июля 2011

У меня есть QWidget, где я рисую некоторые линии, и я хотел бы включить / реализовать функцию масштабирования, чтобы лучше видеть изображение, которое я рисую. И я хочу подключить его к колесу мыши, как в обычных браузерах, когда вы можете увеличивать и уменьшать масштаб, нажимая клавишу ctrl и поворачивая колесо мыши.

Есть ли для этого функция по умолчанию? Я попытался найти несколько примеров, но безуспешно. Так как я могу это сделать?

1 Ответ

15 голосов
/ 12 июля 2011

Попробуйте переопределить ваш paintEvent и примените масштабирование к QPainter перед рисованием.

class YourClass:public QWidget
{
...
  protected:
     void paintEvent ( QPaintEvent * event );
     void wheelEvent ( QWheelEvent * event );
  private:
     qreal scale;
};

void YourClass::paintEvent ( QPaintEvent * event )
{
    QPainter p;
    p.scale(scale,scale);
// paint here
}
void YourClass::wheelEvent ( QWheelEvent * event )
{
    scale+=(event->delta()/120); //or use any other step for zooming 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...