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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsView - фиксированный размер и фон  (Прочитано 6901 раз)
izoomer
Гость
« : Март 01, 2009, 18:44 »

У меня есть класс от QGraphicsView:
Код:
Player::Player(QWidget *parent)
 : QGraphicsView(parent)
{
QGraphicsScene * pole = new QGraphicsScene(this);
pole->setBackgroundBrush(QPixmap("pics/player.tif"));
QGraphicsView::setScene(pole);
}

задача в следующем, в этом классе на фоне должно быть изображение заданное, а сверху уже множество разных QGraphicsItem. То есть по сути нужен QGraphicsView заданного фиксированного размера равного размеру картинки фона а сверху уже на нем различные виджеты и итемы планируются. Если добавлять в сцену QGraphicsPixmapItem то естественно он добавляется как бы объектом а не фоном.
Если делать как в коде в вверху то фон размножается как бы, то есть почему то в по четверти режет изображение и замащивает все пространство. И не нашел как зафиксировать размер QGraphiscView что бы он не менялся. Можно ли в сцене размещать итемы один на одном слоями.
Подскажите как сделать.
Записан
BaltikS
Гость
« Ответ #1 : Март 01, 2009, 19:20 »

1) тема из 2D и 3D графики
2)
Цитировать
Можно ли в сцене размещать итемы один на одном слоями
- можно. При создании нового итема в конструкторе указать parentItem...

Я бы сделал QGraphicsPixmapItem, вогнал бы туды pixmap... Установил бы сцену размерами с этот pixmap, и пихал бы на созданный pixmapItem остальные item-ы... При этом ограничил бы перемещения(расположения) в зависимости от pixmapItem-а... А насчёт подгона graphivsView под размер Pixmap-а, считаю неправильным!
Записан
Rcus
Гость
« Ответ #2 : Март 01, 2009, 19:21 »

void QGraphicsItem::setZValue ( qreal z )
уже не катит?
Записан
izoomer
Гость
« Ответ #3 : Март 01, 2009, 19:39 »

1) тема из 2D и 3D графики
2)
Цитировать
Можно ли в сцене размещать итемы один на одном слоями
- можно. При создании нового итема в конструкторе указать parentItem...

Я бы сделал QGraphicsPixmapItem, вогнал бы туды pixmap... Установил бы сцену размерами с этот pixmap, и пихал бы на созданный pixmapItem остальные item-ы... При этом ограничил бы перемещения(расположения) в зависимости от pixmapItem-а... А насчёт подгона graphivsView под размер Pixmap-а, считаю неправильным!
спасибо за метода, уже пробую. Только вот встает вопрос - мне требуется что бы на этом QGraphicsPixmapItem разместить QGraphicsTextItem - сверху на картинке в заданном месте, а я пока не нашел методов позволяющих задавтаь координаты итема .
Записан
BaltikS
Гость
« Ответ #4 : Март 01, 2009, 21:56 »

чем больше zValue, тем "выше" будет item.
Код
C++ (Qt)
QGraphicsPixmapItem * pItem = new QGraphicsPixmapItem;
pItem->setZValue(0);
pItem->setPos(0,0);
 
QGraphicsTextItem *tItem = new QGraphicsTextItem(pItem);
tItem->setPos(10,10);
pItem->setZValue(1);
ТОлько нужно помнить что setPos ставит относительно сцены, а не parent-a. Для преобразования координат относительно родителя используется методы mapFromParent() и mapToParent().
Записан
OS2
Самовар
**
Offline Offline

Сообщений: 186



Просмотр профиля WWW
« Ответ #5 : Март 31, 2009, 13:10 »

Только не так:
Код
C++ (Qt)
tItem->setPos(10,10);
pItem->setZValue(1);
а так:
Код
C++ (Qt)
tItem->setPos(10,10);
tItem->setZValue(1);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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