смещение точек x, y, когда ширина уменьшается ниже 200 в QGraphicsScene - PullRequest
2 голосов
/ 29 февраля 2012

Я создал QGraphicsScene

scene = new QGraphicsScene(0,0,200,200);

и нарисовал линию scene.addLine(0,0,100,100,pen);, и я правильно нарисовал линию от (0,0) до (100,100).

Когда я изменяю код на

scene = new QGraphicsScene(0,0,150,200);

и рисую ту же линию scene.addLine(0,0,100,100,pen);, Его точка x, y смещается в правую сторону на 50 пикселей.Почему это происходит?Как этого избежать?

1 Ответ

3 голосов
/ 29 февраля 2012

По умолчанию прямоугольник сцены центрируется в QGraphicsView, когда он меньше, чем вид.

Вы можете использовать QGraphicsView::setAlignment, чтобы изменить это.


Поскольку предпочтительный размер представления, возвращаемый QGraphicsView::sizeHint(), также является размером сцены, вы можете настроить вид так, чтобы он точно подходил к сцене с помощью:
view->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

, который указывает макету использовать только sizeHint() для расчета размера виджета.
Или, если вид не находится внутри макета, вам придется установить размер с помощью

view->setFixedSize(view->sizeHint()); 

каждый раз, когда вы меняете размер прямоугольника сцены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...