crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> НАХОЖДЕНИЕ КООРДИНАТ ЭЛЕМЕНТА
Trisch
  опции профиля:
сообщение 30.1.2012, 12:58
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


мне надо получить все координаты элементов, которые находятся на сцене

Я думал сделать так:
//---
    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
  опции профиля:
сообщение 30.1.2012, 13:16
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


QPointF QGraphicsItem::scenePos () const тебе в помощь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 30.1.2012, 13:47
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


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


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

тот же результат(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 30.1.2012, 14:18
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


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


А элементы каким образом размещаются?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 30.1.2012, 23:49
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Цитата(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
  опции профиля:
сообщение 31.1.2012, 7:24
Сообщение #6


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


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
  опции профиля:
сообщение 1.2.2012, 3:01
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Цитата(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
  опции профиля:
сообщение 1.2.2012, 8:08
Сообщение #8


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


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


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

Сообщение отредактировал wiz29 - 1.2.2012, 8:09
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 5.2.2012, 18:53
Сообщение #9


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Цитата(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);
    }


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



Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 12.8.2020, 15:52