我的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;
}
}
但是,当我将节点快速移动时, View 上会出现一些伪像(黑线)。有什么建议可以摆脱这些吗?
最佳答案
确保在boundingRect()
子类的QGraphics*Item
方法中包含一个边距。
http://qt-project.org/doc/qt-4.8/qgraphicsitem.html#boundingRect
PS:不要将逻辑放在paintEvent
方法中。此方法用于呈现内容,而不是收集UI字段内容或其他内容(arbre->line1->setLine
)