Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: izoomer от Март 01, 2009, 18:44



Название: QGraphicsView - фиксированный размер и фон
Отправлено: 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 что бы он не менялся. Можно ли в сцене размещать итемы один на одном слоями.
Подскажите как сделать.


Название: Re: QGraphicsView - фиксированный размер и фон
Отправлено: BaltikS от Март 01, 2009, 19:20
1) тема из 2D и 3D графики
2)
Цитировать
Можно ли в сцене размещать итемы один на одном слоями
- можно. При создании нового итема в конструкторе указать parentItem...

Я бы сделал QGraphicsPixmapItem, вогнал бы туды pixmap... Установил бы сцену размерами с этот pixmap, и пихал бы на созданный pixmapItem остальные item-ы... При этом ограничил бы перемещения(расположения) в зависимости от pixmapItem-а... А насчёт подгона graphivsView под размер Pixmap-а, считаю неправильным!


Название: Re: QGraphicsView - фиксированный размер и фон
Отправлено: Rcus от Март 01, 2009, 19:21
void QGraphicsItem::setZValue ( qreal z )
уже не катит?


Название: Re: QGraphicsView - фиксированный размер и фон
Отправлено: izoomer от Март 01, 2009, 19:39
1) тема из 2D и 3D графики
2)
Цитировать
Можно ли в сцене размещать итемы один на одном слоями
- можно. При создании нового итема в конструкторе указать parentItem...

Я бы сделал QGraphicsPixmapItem, вогнал бы туды pixmap... Установил бы сцену размерами с этот pixmap, и пихал бы на созданный pixmapItem остальные item-ы... При этом ограничил бы перемещения(расположения) в зависимости от pixmapItem-а... А насчёт подгона graphivsView под размер Pixmap-а, считаю неправильным!
спасибо за метода, уже пробую. Только вот встает вопрос - мне требуется что бы на этом QGraphicsPixmapItem разместить QGraphicsTextItem - сверху на картинке в заданном месте, а я пока не нашел методов позволяющих задавтаь координаты итема .


Название: Re: QGraphicsView - фиксированный размер и фон
Отправлено: BaltikS от Март 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().


Название: Re: QGraphicsView - фиксированный размер и фон
Отправлено: OS2 от Март 31, 2009, 13:10
Только не так:
Код
C++ (Qt)
tItem->setPos(10,10);
pItem->setZValue(1);
а так:
Код
C++ (Qt)
tItem->setPos(10,10);
tItem->setZValue(1);