QGraphicsView文物

时间:2012-03-25 12:04:46

标签: c++ qt qgraphicsview

我的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;
}

}

但是当我将节点移动到快速时,视图上会出现一些假象(黑线)。有什么建议摆脱那些?

2 个答案:

答案 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()。这对我有类似的问题。