LINUX.ORG.RU

Избранные сообщения september_valentine

исходник CustomGraphicsView из книги Макс Шлее Qt 4.8

Форум — Development

Привет! у меня такая проблема...разбирал исходник который был приведен в книге Макс Шлее Qt 4.8 профессиональное программирование на с++ пример CustomGraphicsView листинг 21...потом я решил немного изменить , чтобы можно было рисовать мышкой линию, т.е взял подставил за место класса QGraphicsScene scene свой класс MyScene1 scene. Там я унаследовал mousePressEvent и mouseMoveEvent чтобы можно рисовать линию...все работает отлично как и задумалось...теперь я решил изменить курсор над линию который нарисовал pm_line->setCursor(Qt::OpenHandCursor); и здесь появляется проблема, т.е. нажимаешь на кнопку мыши, чтобы установить начальные координаты мыши, потом перемещаюшь мышкой и отпускаешь кнопку, а линия досихпор продолжает перемещается за мышкой, так и не получается установить конечные координаты линии...вы наверно скажите надо унаследовать mouseReleaseEvent, но не понимаю зачем, если после отпускание кнопки мыши, должна нарисоваться линия... почему так происходит ? как можно это исправить ? вот код

class MyScene1 : public QGraphicsScene
{
    Q_OBJECT
public:
     MyScene1(const QRectF& scene, QObject* parent = nullptr) : QGraphicsScene(scene, parent)
    {
    }

private:
    QGraphicsLineItem* pm_line = new QGraphicsLineItem;
    qreal x_line, y_line;
    bool m_flag;

    void mousePressEvent(QGraphicsSceneMouseEvent* event)
    {
        x_line = event->scenePos().x();
        y_line = event->scenePos().y();
        pm_line = addLine(x_line, y_line, event->scenePos().x(), event->scenePos().y());
        pm_line->setCursor(Qt::OpenHandCursor);

    }

    void mouseMoveEvent(QGraphicsSceneMouseEvent* event)
    {
        pm_line->setLine(x_line, y_line, event->scenePos().x(), event->scenePos().y());

    }
};

 ,

september_valentine
()