Система кооринат QGraphics



  • При добавлении первого объекта на сцену он всегда оказывается в координатах (0 ,0) объекта QGraphicsView. Все остальные объекты добавляются относительно его координат.
    Подскажите как добавлять объекты сразу по нужным мне координатам.
    Вот код добавления itemElips

    void DrawGraf::draw_date_time(int number, QString date)
    {
    QPen *pen = new QPen();
    pen->setBrush(Qt::blue);
    pen->setStyle(Qt::SolidLine);
    pen->setWidth(2);

    QGraphicsItem *sd= scene->addEllipse(number * 20,graphicsView->height()-20 +number,5,5,*pen);

    graphicsView->setScene(scene);
    graphicsView->show();
    

    }



  • Создайте объект QGraphicsEllipseItem заранее.
    Настройте его так, как Вам необходимо.
    Добавьте его в сцену.



  • Оказывается при создании сцены надо установить её размер и положение при помощи функции scene -> setSceneRect(0.0,0.0,100.0,100.0)



  • Тема не закрыта.
    Если задать сцене размеры, то при увеличении числа items не появляются полосы прокрутки(скорее всего Scene не изменяет свои размеры), однако если задать размерами нули, то полосы прокрутки появляются, однако координаты items не соответствуют заданным.
    То есть проблема та же самая - "Первый элемент всегда появляется в координаторах (0;0), независимо от того какие координаты им заданы при создании"
    Заранее создание объекта item, с последующем добавлением его к scene не помогает.

    Покажите как поступить правильно чтобы и scene изменялась автоматически и что бы items появлялись в нужных мне местах.



  • Думаю, что вам стоит обратить внимание на свойство sceneRect класса QGraphicsView:
    http://doc.qt.io/qt-5/qgraphicsview.html#sceneRect-prop


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.