Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Rakot от Апрель 24, 2008, 12:40



Название: Отображение графических элементов
Отправлено: Rakot от Апрель 24, 2008, 12:40
Qt 4.3.4

Пытаюсь создать сначала 100 объектов типа QGraphicsEllipseItem, затем на них 100 объектов типа QGraphicsTextItem. Но почему то часть текста показывается, а часть нет!

Как сделать так чтоб текст внутри эллипсов отображался на всех эллипсах и был отцентрирован в них?

З.Ы. в Ассистенте чо та есть про перекрытие элементов, но я как ни пытался поставить разные флаги все равн не раьотает :-\



Название: Re: Отображение графических элементов
Отправлено: Rakot от Апрель 25, 2008, 18:48
Все разобрался! :D

Для того, чтоб текст отображался над было воспользоваться методом setZValue().
А для центровки внутри эллипса, сначала, установил ширину текста, равную ширине стороны эллипса, а ,затем, уже выводил текст в формате HTML(используя тег<CENTER>).


Теперь в другом проблема! Как очистить объект QGraphicsScene от этих 100 эллипсов? А то птом на этом же QGraphicsView рисую 50 эллипсов, а у мну по прежнему их 100 и с текстом внутри полн белеберда.


Название: Re: Отображение графических элементов
Отправлено: Rakot от Апрель 26, 2008, 14:40
И с этим разобрался)) 8)

Надеюсь больше проблем с графикой не будет! ;D

Проблему решил так:
Код:
QList<QGraphicsItem *> i = scene->items();
QList<QGraphicsItem *>::iterator j = i.begin();
for(;j!=i.end();++j)
{
    if(*j) delete *j;
}


Название: Re: Отображение графических элементов
Отправлено: WW от Апрель 26, 2008, 18:47
Честно говоря,  с проблеммой не разбирался, но рад, что все решил сам.
А ассистент - великая вещь! Да и поиск по форуму помогает.


Название: Re: Отображение графических элементов
Отправлено: DS_tm от Май 13, 2008, 15:38
И с этим разобрался)) 8)

Надеюсь больше проблем с графикой не будет! ;D

Проблему решил так:
Код:
QList<QGraphicsItem *> i = scene->items();
QList<QGraphicsItem *>::iterator j = i.begin();
for(;j!=i.end();++j)
{
    if(*j) delete *j;
}

хм, а если так попробывать:

Код:
foreach(QGraphicsItem *item, scene->items()) {
    scene->removeItem(item);
}