LINUX.ORG.RU

Определение координат в Qt


0

1

Есть обект QGraphicsEllipseItem, который вращаю с помощью rotate() Нужно в иметь возможность в любой момент определять координаты этого обекта по отношению к сцене. Функции x() y() все время выдают 0. На форуме вроде была похожая тема([Qt] Пара нубских вопросов.), только не смог разобраться.

Вот код

#include <QtGui>
class my : public QGraphicsScene {
public :
        my(QObject *parent =  0);

protected :
        virtual void keyPressEvent(QKeyEvent *keyEvent);

private :
        QGraphicsEllipseItem *item;
};

my::my(QObject *parent)
        :QGraphicsScene(parent)
{
        this->setSceneRect(0, 0, 600, 600);
        item = new QGraphicsEllipseItem(0, this);
        item->setRect(QRectF(200, 200, 200, 200));
}

void my::keyPressEvent(QKeyEvent *keyEvent)
{
        item->rotate(1);
//      qDebug() << item->x() << "  " << item->y();
}

int main(int argc, char **argv)
{
        QApplication app(argc, argv);

        my m;
        QGraphicsView v(&m);
        v.show();

        return app.exec();
}

С функцией тоже mapToScene() не получилось

Ответ на: комментарий от anonymous

То есть когда я применяю функцию rotate(), он не меняет свою позицию? Но ведь он ухе отоброжает круг в другом месте. Как мне определить координаты круга в таком случае?

gDendy ()
Ответ на: комментарий от gDendy

Не меняет, конечно. Он меняет угол вращения.

unC0Rr ★★★★★ ()
Ответ на: комментарий от gDendy

Как мне определить координаты круга в таком случае?

    QRectF br = item->boundingRect();
    qDebug() << br.center() << item->mapToParent(br.center());

Оно?

rival ★★ ()
Ответ на: комментарий от gDendy

> А в данном случае, когда parent = 0, есть разница между mapToParent и mapToScene?

Не знаю, почему бы не проверить самому?

rival ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.