Russian Qt Forum

Qt => Вопросы новичков => Тема начата: demaker от Август 06, 2014, 10:58



Название: QGraphicsView
Отправлено: demaker от Август 06, 2014, 10:58
Отображаю в объекте класса QGraphicsView
сцену (QGraphicsScene);

На сцену кинул объект класса GraphicsObject и указываю координаты на сцене(верхней левый угол)
Код
C++ (Qt)
object->setPos(0,0)
scene->addItem(object);
 
Сам объект(object) прорисовывается в функции paint();
И с помощью функции boundingRect() определяем область в которой происходит прорисовка.

Поместил вьювер на виджет вроде все норм.
Но когда я задал ему размер на виджете
Код
C++ (Qt)
view->setGeometry(0,0,320,165);
 
то почему-то объект(object) сместился со свой изначальной позиции, которую я ему задал.

Подскажите в чем причина???



Название: Re: QGraphicsView
Отправлено: Bepec от Август 06, 2014, 12:13
Центрирует он вроде сам себя, GraphicsView и где то это можно отключить.


Название: Re: QGraphicsView
Отправлено: demaker от Август 06, 2014, 12:19
 ??? не понял это как


Название: Re: QGraphicsView
Отправлено: Bepec от Август 06, 2014, 12:31
Ну как бы вы не привели результата этого смещения, потому можно только догадываться куда оно сместилось :)


Название: Re: QGraphicsView
Отправлено: demaker от Август 06, 2014, 12:58
Ну как бы вы не привели результата этого смещения, потому можно только догадываться куда оно сместилось :)

Если размер вьювера
Код:
view->setGeometry(0,0,320,265)
становится  больше, чем
Код:
QRectF MyObject:: boundingRect() const
{
 return QRectF(0,0,120,50);
}

То его смещает на разницу координат, т.е 320-120 и 265-50
Вот...
Как от этого избавиться ???


Название: Re: QGraphicsView
Отправлено: Nidxogg от Август 06, 2014, 14:00
В свойствах QGraphicsView установи привязку сцены к левому верхнему углу

void setAlignment ( Qt::Alignment alignment )
Qt::AlignLeft|Qt::AlignTop

По умолчанию, она в центре view располагается


Название: Re: QGraphicsView
Отправлено: demaker от Август 06, 2014, 14:18
Спсб


Название: Re: QGraphicsView
Отправлено: demaker от Август 06, 2014, 15:22
В свойствах QGraphicsView установи привязку сцены к левому верхнему углу

void setAlignment ( Qt::Alignment alignment )
Qt::AlignLeft|Qt::AlignTop

По умолчанию, она в центре view располагается


Да,но теперь по вертикали мой объект никак не перемещается
Что-то опять... ???


Название: Re: QGraphicsView
Отправлено: demaker от Август 06, 2014, 15:47
Сделал так
задал длину сцены и зафиксировал размеры вьювера
Код
C++ (Qt)
scene->setSceneRect(x,y,width,high);
...
view->setFixedSize(width+5,high+5);
 

Вроде ничего...