Russian Qt Forum
Май 05, 2024, 17:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsView  (Прочитано 3259 раз)
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« : Август 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) сместился со свой изначальной позиции, которую я ему задал.

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

Записан
Bepec
Гость
« Ответ #1 : Август 06, 2014, 12:13 »

Центрирует он вроде сам себя, GraphicsView и где то это можно отключить.
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #2 : Август 06, 2014, 12:19 »

 Непонимающий не понял это как
Записан
Bepec
Гость
« Ответ #3 : Август 06, 2014, 12:31 »

Ну как бы вы не привели результата этого смещения, потому можно только догадываться куда оно сместилось Улыбающийся
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #4 : Август 06, 2014, 12:58 »

Ну как бы вы не привели результата этого смещения, потому можно только догадываться куда оно сместилось Улыбающийся

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

То его смещает на разницу координат, т.е 320-120 и 265-50
Вот...
Как от этого избавиться Непонимающий
Записан
Nidxogg
Гость
« Ответ #5 : Август 06, 2014, 14:00 »

В свойствах QGraphicsView установи привязку сцены к левому верхнему углу

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

По умолчанию, она в центре view располагается
« Последнее редактирование: Август 06, 2014, 14:06 от Nidxogg » Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #6 : Август 06, 2014, 14:18 »

Спсб
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #7 : Август 06, 2014, 15:22 »

В свойствах QGraphicsView установи привязку сцены к левому верхнему углу

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

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


Да,но теперь по вертикали мой объект никак не перемещается
Что-то опять... Непонимающий
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #8 : Август 06, 2014, 15:47 »

Сделал так
задал длину сцены и зафиксировал размеры вьювера
Код
C++ (Qt)
scene->setSceneRect(x,y,width,high);
...
view->setFixedSize(width+5,high+5);
 

Вроде ничего...
« Последнее редактирование: Август 06, 2014, 15:49 от demaker » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.105 секунд. Запросов: 23.