我的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)

08-26 19:50