Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: НАХОЖДЕНИЕ КООРДИНАТ ЭЛЕМЕНТА
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Система рисования. Печать
Trisch
мне надо получить все координаты элементов, которые находятся на сцене

Я думал сделать так:
//---
    double q;
    QList<QGraphicsItem*> items = graphicsView->scene()->items();

    QList<QGraphicsItem*>::iterator it = items.begin();
    for(; it != items.end(); ++it)
    {
        pItem = *it;
        q = pItem->x();
        std::cout << q;
    }
//---


но у меня в итоге отображаются одни нули. Что я делаю не так? или как это можно сделать по другому?

wiz29
QPointF QGraphicsItem::scenePos () const тебе в помощь
Trisch
Цитата(wiz29 @ 30.1.2012, 13:16) *
QPointF QGraphicsItem::scenePos () const тебе в помощь


То-есть так?
q = pItem->scenePos().x();

тот же результат(
wiz29
Цитата(Trisch @ 30.1.2012, 14:47) *
тот же результат(


А элементы каким образом размещаются?
Trisch
Цитата(wiz29 @ 30.1.2012, 15:18) *
Цитата(Trisch @ 30.1.2012, 14:47) *
тот же результат(


А элементы каким образом размещаются?


вот фрагмент кода размещения элементов:
    for(int i = 0; i < node; i++)
    {
        QGraphicsEllipseItem *pEllipseItem =
                pScene->addEllipse(QRectF( (oX + r*cos(i*z+M_PI/2)) , (oY + r*sin(i*z+M_PI/2)) ,r_m ,r_m),
                                   QPen(Qt::red), QBrush(Qt::red));
        pEllipseItem->setFlags(QGraphicsItem::ItemIsMovable);
    }
wiz29
QGraphicsEllipseItem * QGraphicsScene::addEllipse ( const QRectF & rect, const QPen & pen = QPen(), const QBrush & brush = QBrush() )

вот что написано к этой функции:

Note that the item's geometry is provided in item coordinates, and its position is initialized to (0, 0).

Делай выводы.
Trisch
Цитата(wiz29 @ 31.1.2012, 8:24) *
QGraphicsEllipseItem * QGraphicsScene::addEllipse ( const QRectF & rect, const QPen & pen = QPen(), const QBrush & brush = QBrush() )

вот что написано к этой функции:

Note that the item's geometry is provided in item coordinates, and its position is initialized to (0, 0).

Делай выводы.


Думаю надо как-то преобразовать координаты. А вот как это сделать, ума не приложу(((((
wiz29
Цитата(Trisch @ 1.2.2012, 4:01) *
Думаю надо как-то преобразовать координаты. А вот как это сделать, ума не приложу(((((


Координаты преобразовывать не нужно, если ты используешь scenePos. Просто по умолчанию все размещенные тобой элементы имеют позицию QPointF(0.0, 0.0), поэтому и получаются нули при считывании. Если же задать, после создания каждого элемента, его позицию отличной от QPointF(0.0, 0.0), тогда получится результат отличный от нулей )
Trisch
Цитата(wiz29 @ 1.2.2012, 9:08) *
Цитата(Trisch @ 1.2.2012, 4:01) *
Думаю надо как-то преобразовать координаты. А вот как это сделать, ума не приложу(((((


Координаты преобразовывать не нужно, если ты используешь scenePos. Просто по умолчанию все размещенные тобой элементы имеют позицию QPointF(0.0, 0.0), поэтому и получаются нули при считывании. Если же задать, после создания каждого элемента, его позицию отличной от QPointF(0.0, 0.0), тогда получится результат отличный от нулей )


Я сделал так:
 for(int i = 0; i < node; i++)
    {
        QGraphicsEllipseItem *pEllipseItem =
                pScene->addEllipse( 0, 0 ,r_m ,r_m,
                                   QPen(Qt::red), QBrush(Qt::red));
        pEllipseItem->setX(oX + c*r*cos(i*z+M_PI/2));
        pEllipseItem->setY(oY + c*r*sin(i*z+M_PI/2));
        pEllipseItem->setFlags(QGraphicsItem::ItemIsMovable);
    }


все работает))) Спасибо)



Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2022 IPS, Inc.