我正在尝试使用 QT 4.5 做一个绘画程序,所以我使用 QGraphicsView 作为画布,并使用 QGraphicsScene 来存储绘制的项目。由于某些原因,我无法在我自己的派生 QGraphicsView 中获得 QPainter 上下文
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) 为什么我不能在 QGraphicsView 中使用 paintEvent 来获得活动的 QPainter?2)有可能我可以得到一个吗?
提前致谢!