QT 4.7QGraphicsView滚动事件不刷新
我有一个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的一个setTransform(即,如果我想要旋转的项目),视图停止重绘场景,作为对用于平移的水平或垂直滚动条的响应。当我放大或缩小时,视图也会停止调整场景的大小。
如果我调整窗口大小或将窗口拖出屏幕然后返回屏幕,视图将刷新。我一直在查看QPainter Documentation以及示例,我无法弄清楚我做错了什么。我假设这与坐标系有关。
你是绝对正确的。 'painter-> setTransform(transform,true);'解决了这个问题。 – LeviX 2011-05-26 18:45:18