Я пытаюсь сделать программу рисования с 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) Могу ли я получить один?
Заранее спасибо!