Правильно, после того, как я немного выдернул волосы, это кажется невозможным, так что вот мое решение. Все, что вы рисуете, должно быть добавлено в QGraphicsScene; так что вы выводите из него свою собственную реализацию.
Самый простой способ - определить временный указатель QGraphicsItem для линий, прямоугольников и т. Д., Которые вы хотите нарисовать.
Переопределить виртуальные события mousePressed (), mouseMove () и mouseRelease () соответственно. В mousePressed () инициализируйте временный указатель QGraphicsItem и добавьте его в сцену.
Внутри mouseMoved (), соответственно установите координаты временного QGraphicsItem. Для mouseReleased создайте копию временного объекта и добавьте его в сцену и удалите временный QGraphicsItem (который вы использовали для рисования линий, прямоугольников и т. Д.) Из сцены.
Полагаю, мораль этого в том, что в QGraphicsView нет контекста QPainter, и вам лучше игнорировать его paintEvent ().
Надеюсь, это поможет кому-то, кто может наткнуться на это.