Я пытаюсь сделать программу рисования с QT 4.5, поэтому я использую QGraphicsView для холста и QGraphicsScene для хранения нарисованных элементов. По некоторым причинам я просто не мог получить контекст QPainter в своем собственном производном QGraphicsView
class DrawingCanvas : public QGraphicsView
{
DrawingCanvas::DrawingCanvas(QWidget * parent);
...
};
DrawingCanvas::DrawingCanvas(QWidget * parent = 0) : QGraphicsView(parent)
{
....
}
void DrawingCanvas::paintEvent(QPaintEvent& paintEventInfo)
{
// Result in painter not active
QPainter(this);
...
}
Однако, если я изменяю DrawingCanvas, чтобы быть дочерним элементом QWidget, он работает. Видя, что QGraphicsView получен из QAbstractScrollArea, затем QFrame, затем QWidget, я ожидал бы, что код будет работать.
Итак, я думаю, что вопросы:
1) Почему я не могу использовать paintEvent в QGraphicsView для получения активного QPainter? 2) Возможно ли, что я мог бы получить один?
Спасибо заранее!