crossplatform.ru

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


  Ответ в НАХОЖДЕНИЕ КООРДИНАТ ЭЛЕМЕНТА
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Trisch Дата 5.2.2012, 18:53
 
Цитата(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);
    }


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



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


Координаты преобразовывать не нужно, если ты используешь scenePos. Просто по умолчанию все размещенные тобой элементы имеют позицию QPointF(0.0, 0.0), поэтому и получаются нули при считывании. Если же задать, после создания каждого элемента, его позицию отличной от QPointF(0.0, 0.0), тогда получится результат отличный от нулей )
Trisch Дата 1.2.2012, 3:01
 
Цитата(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 Дата 31.1.2012, 7: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).

Делай выводы.
Trisch Дата 30.1.2012, 23:49
 
Цитата(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 Дата 30.1.2012, 14:18
 
Цитата(Trisch @ 30.1.2012, 14:47) *
тот же результат(


А элементы каким образом размещаются?
Trisch Дата 30.1.2012, 13:47
 
Цитата(wiz29 @ 30.1.2012, 13:16) *
QPointF QGraphicsItem::scenePos () const тебе в помощь


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

тот же результат(
wiz29 Дата 30.1.2012, 13:16
  QPointF QGraphicsItem::scenePos () const тебе в помощь
Trisch Дата 30.1.2012, 12:58
  мне надо получить все координаты элементов, которые находятся на сцене

Я думал сделать так:
//---
    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;
    }
//---


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

Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 0:51