исходник CustomGraphicsView из книги Макс Шлее Qt 4.8
Привет! у меня такая проблема...разбирал исходник который был приведен в книге Макс Шлее 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());
}
};