Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Garik от Май 24, 2011, 17:39



Название: Область видимости QGraphicsItem
Отправлено: Garik от Май 24, 2011, 17:39
Всем привет!!!!
интересует такой вопрос!!!!!
Создал QGraphicsView, подключил к ниму сцену!!!!
теперь рисую например  QGraphicsRectItem (залитый черной заливкой) и QGraphicsTextItem(красного цвета, с флагом ItemIsMovable)!!!

1. как сделать что-бы QGraphicsTextItem  всегда находился поверх  QGraphicsRectItem!!!
2. И можно ли для QGraphicsTextItem задать  ограниченую область видимости!!... тоесть например если  QGraphicsRectItem имеет размеры (0,0,100,100) то QGraphicsTextItem будет виден только в предалах этой области, а за ее границами нет!!! что-то на примере Бегущей строки, когда строка видна только в определенной области, в моем случаее это в созданом квадрате!!!!

Заранее спасибо!!!


Название: Re: Область видимости QGraphicsItem
Отправлено: alexman от Май 24, 2011, 18:17
1. как сделать что-бы QGraphicsTextItem  всегда находился поверх  QGraphicsRectItem!!!
void QGraphicsItem::setZValue ( qreal z )

2. И можно ли для QGraphicsTextItem задать  ограниченую область видимости!!... тоесть например если  QGraphicsRectItem имеет размеры (0,0,100,100) то QGraphicsTextItem будет виден только в предалах этой области, а за ее границами нет!!! что-то на примере Бегущей строки, когда строка видна только в определенной области, в моем случаее это в созданом квадрате!!!!
Попробуй флаг установить QGraphicsItem::ItemClipsToShape


Название: Re: Область видимости QGraphicsItem
Отправлено: Garik от Май 24, 2011, 18:32

void QGraphicsItem::setZValue ( qreal z )
[/quote]
Спасибо сработало!!!

[/quote]
Попробуй флаг установить QGraphicsItem::ItemClipsToShape
[/quote]

а с етим еще не дорозобрался????
Как задать ту область в которой АЙТЕМ отображается, а за пределами нет!!!!


Название: Re: Область видимости QGraphicsItem
Отправлено: alexman от Май 24, 2011, 18:50
QRectF QGraphicsItem::boundingRect () const
А если меняете bounding rect, то вызывайте void QGraphicsItem::prepareGeometryChange ()


Название: Re: Область видимости QGraphicsItem
Отправлено: Garik от Май 25, 2011, 12:33
QRectF QGraphicsItem::boundingRect () const
А если меняете bounding rect, то вызывайте void QGraphicsItem::prepareGeometryChange ()

Не совсем получается то что мне нужно!!!!! или я не правльно понял!!!!
Данный метод просто ограничивает область отображения АЙТЕМА!!!!

а у меня стоит задача, ограничит область так что-бы я имел возможность в данной область двигать объектом только в этой области!!!!

Грубо говоря если представить себе бегущию строку!!!! то у меня должно получится тоже самое, один Айтом это Ректангл (неподвижный), а второй это Айтем это Текст,  который  может быть намного длинее но область видимости его должна ограничиватся только в пределах Ректангла!!!! Ну и что-бы я мог ним двигать не всей сцене а только в этой области!!!!

дальшн планируется просто через таймер менять координаты Текста, что-бы получилась ефект бегущей строки!!!! как-то вот так!!!!!
На данный момент еще ничего не вышло((( но думаю рыть где-то в этом направлении!!!


Название: Re: Область видимости QGraphicsItem
Отправлено: m_ax от Май 25, 2011, 13:13
Сколько восклицаний))

Переопределите метод paint у QGraphicsItem и делайте там всё что хотите.


Название: Re: Область видимости QGraphicsItem
Отправлено: GreatSnake от Май 25, 2011, 13:17
Если ты так будешь кричать, мы все здесь оглохнем.

Перегружай QGraphicsItem::paint() и уже в нём задавай клиппинг через QPainter::setClipRect().

2 m_ax:
прям мои мысли прочитал :)


Название: Re: Область видимости QGraphicsItem
Отправлено: m_ax от Май 25, 2011, 15:50
2 m_ax:
прям мои мысли прочитал :)
А то))
Беру уроки у тех перцев с передачи: битвы экстрасенсов))


Название: Re: Область видимости QGraphicsItem
Отправлено: alexman от Май 25, 2011, 15:56
2 m_ax:
прям мои мысли прочитал :)
А то))
Беру уроки у тех перцев с передачи: битвы экстрасенсов))
А я думал кто же эту передачу смотрит :o ;)