Russian Qt Forum

Qt => Вопросы новичков => Тема начата: dqrest от Июль 05, 2012, 17:42



Название: Изменение масштаба отображаемого точечного графика при скроллинге на QRaphicsVie
Отправлено: dqrest от Июль 05, 2012, 17:42
Всем привет!!!Есть точечный график, который состоит из линий. Есть scene and view. Вывожу длинный график в view. Есть одна проблема, как изменить масштаб view так, чтобы видимая часть графика уместилась по вертикали в окно при скроллинге???


Название: Re: Изменение масштаба отображаемого точечного графика при скроллинге на QRaphicsVie
Отправлено: _OLEGator_ от Июль 05, 2012, 21:43
Код
C++ (Qt)
void QGraphicsView::fitInView ( const QRectF & rect, Qt::KeepAspectRatioByExpanding )


Название: Re: Изменение масштаба отображаемого точечного графика при скроллинге на QRaphicsVie
Отправлено: dqrest от Июль 06, 2012, 08:37
спс))я так понимаю, что нужно переопределить функцию скроллинга у view добавить вот эту функцию???только это нужно добавить???


Название: Re: Изменение масштаба отображаемого точечного графика при скроллинге на QRaphicsVie
Отправлено: _OLEGator_ от Июль 06, 2012, 09:10
ничего переопределять не надо, просто вызвать ее один раз и масштаб подстроится под заданные размеры:
Код
C++ (Qt)
void QGraphicsView::fitInView ( QGraphicsView::sceneRect(), Qt::KeepAspectRatioByExpanding )

и читать документацию надо!


Название: Re: Изменение масштаба отображаемого точечного графика при скроллинге на QRaphicsVie
Отправлено: dqrest от Июль 09, 2012, 08:05
Спасибо!!!)))))


Название: Re: Изменение масштаба отображаемого точечного графика при скроллинге на QRaphicsVie
Отправлено: dqrest от Июль 09, 2012, 17:25
можно еще один вопрос??? насколько я понял  QGraphicsView::QRectF sceneRect () const выдает нам QRectF всей сцены, и finInView принимает QRectF всей сцены.А мне это не выгодно, поскольку я добавляю точки  и и приходится масштабировать все сцену, а мне нужно только видимую часть сцены, написал следующий код, который находится в обработчике нажатия кнопки для масштабирования видимой части сцены, после добавления точки, но почему-то выходит какая-та ересь:
видимая часть не масштабирется, и вообще начинает уменьшать масштаб при больших добалений точек.

Код:
view->fitInView ( view->mapToScene(view->viewport()->rect()).boundingRect(), Qt::KeepAspectRatioByExpanding);