c++ - QGraphicsView 人工制品

标签 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;
}

但是当我快速移动节点时, View 中会出现一些人工制品(黑线)。有什么建议摆脱那些吗?

最佳答案

请务必在 QGraphics*Item 子类的 boundingRect() 方法中包含边距。

http://qt-project.org/doc/qt-4.8/qgraphicsitem.html#boundingRect

PS:不要将逻辑放在paintEvent 方法中。此方法用于呈现内容,而不是收集 UI 字段内容或其他内容 (arbre->line1->setLine)

关于c++ - QGraphicsView 人工制品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9859974/

相关文章:

windows - 如何将 Qt 与 Rust 一起使用?

qt - 如何在QGraphicsScene中不按Ctrl键选择多个项目?

c++ - 缩放 QGraphicsItem 以适应 QGraphicsView

c++ - LNK1120 关于使用 lineSetAppPriorityW

c++ - 如何在 Qt 应用程序中连接到 MySQL 服务器

c++ - Qt 5 中的类声明和命名空间

python - 使 QGraphicsItem 只能在一个图形 View 中选择

c++ - 您可以将指针转换为数组吗?

c++ - 进行矩阵乘法时 C++ 中的段错误

c++ - 减少模板策略困惑