QT 4.7
我有一个 QGraphicsView / QGraphicsScene。场景有一个自定义的 QGraphicsItem 整个场景不是一次显示的,所以它有一个视口。
我正在覆盖我的 QGraphicsItem 的 paint() 方法,如下所示:
void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget)
{
painter->setClipRect(option->exposedRect);
painter->save();
// Default identity matrix
QTransform transform;
// Apply some transform later
// The next line breaks stuff
painter->setTransform(transform);
// m_image is just a preloaded pixmap (i.e. watermark on all of these items).
painter->drawImage(QPoint(0,0), this->m_image);
painter->restore();
// Snip, do more drawing...
}
如果我尝试在 QPainter 上设置转换(即,如果我尝试旋转项目),视图将停止重新绘制场景作为对用于平移的水平或垂直滚动条的响应。当我放大或缩小时,视图也会停止调整场景大小。
如果我调整窗口大小或将窗口拖出屏幕然后回到屏幕上,视图将刷新。我一直在查看QPainter 文档以及示例,但我无法弄清楚我做错了什么。我假设这与坐标系有关。