我的QGraphicsView遇到了一些问题。我已经将QGraphicsView子类化以重新定义paintEvent。我想使用QGraphicsItem为节点绘制某种树,使用QGraphicsLineItem绘制边缘。
void GraphicsView::paintEvent ( QPaintEvent * event ) {
if(arbre!=NULL) {
arbre->line1->setLine(arbre->text->x(),arbre->text->y(),
arbre->text1->x(),arbre->text1->y());
QGraphicsView::paintEvent(event);
cout << "redessine" << endl;
}
}
但是当我将节点移动到快速时,视图上会出现一些假象(黑线)。有什么建议摆脱那些?
答案 0 :(得分:1)
请确保在boundingRect()
子类的QGraphics*Item
方法中包含边距。
http://qt-project.org/doc/qt-4.8/qgraphicsitem.html#boundingRect
PS:不要在paintEvent
方法中放置逻辑。此方法用于呈现内容,而不是收集UI字段内容或其他任何内容(arbre->line1->setLine
)
答案 1 :(得分:1)
除了错误的逻辑之外,在更改对象几何体之前调用QGraphicsItem :: prepareGeometryChange()。这对我有类似的问题。