gpt4 book ai didi

c++ - QGraphicsView 中的故障网格::drawBackground

转载 作者:太空宇宙 更新时间:2023-11-04 13:41:01 25 4
gpt4 key购买 nike

我正在尝试在 QGraphicsView::drawBackground 上正确显示网格图案。在我尝试移动添加到场景的项目之前,一切似乎都运行良好。

我在 MainWindow 中添加如下行:

   QPen _Pen;
_Pen.setColor(Qt::red);
_Pen.setWidth(3);

QGraphicsLineItem* _Line=new QGraphicsLineItem(0,0,100,100);
_Line->setPen(_Pen);
_Line->setVisible(true);
_Line->setFlags(QGraphicsLineItem::ItemIsSelectable | QGraphicsLineItem::ItemIsMovable);

m_scene->addItem(_Line);

GraphicsView的方法:

GraphicsView::GraphicsView() : cellSize(20)
{
setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
}

void GraphicsView::drawBackground(QPainter *p, const QRectF &crect)
{
p->save();
p->setPen(QPen(Qt::black,1));

for (int x = crect.topLeft().x(); x < crect.bottomRight().x(); x += cellSize)
for (int y = crect.topLeft().y(); y < crect.bottomRight().y(); y += cellSize)
p->drawPoint(x, y);

p->restore();
}

问题可以看这里:

Demonstration

当我移动项目时,它会在其后面留下一串网格点,这些点未与原始网格对齐。

我不明白这个错误是从哪里来的。我做错了什么吗?

最佳答案

我能想到两个可能的问题:

  1. 更改 View 更新模式。这些选项描述了here .

    setViewportUpdateMode(SmartViewportUpdate);setViewportUpdateMode(FullViewportUpdate);

  2. 拖尾可能是由于项目的项目边界矩形太小了半个像素。

(我意识到这个问题很老了,但也许它会对其他人有所帮助)

关于c++ - QGraphicsView 中的故障网格::drawBackground,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27623953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com