- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在 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();
}
问题可以看这里:
当我移动项目时,它会在其后面留下一串网格点,这些点未与原始网格对齐。
我不明白这个错误是从哪里来的。我做错了什么吗?
最佳答案
我能想到两个可能的问题:
更改 View 更新模式。这些选项描述了here .
setViewportUpdateMode(SmartViewportUpdate);
或 setViewportUpdateMode(FullViewportUpdate);
拖尾可能是由于项目的项目边界矩形太小了半个像素。
(我意识到这个问题很老了,但也许它会对其他人有所帮助)
关于c++ - QGraphicsView 中的故障网格::drawBackground,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27623953/
编辑:我已经能够将问题追溯到使用 EditText 而不是 TextView。重复调用仅在字段为 EditText 时发生,并且系统在字段为 TextView 时自行运行。我在文档或网上找不到任何内容
我正在尝试在 QGraphicsView::drawBackground 上正确显示网格图案。在我尝试移动添加到场景的项目之前,一切似乎都运行良好。 我在 MainWindow 中添加如下行:
我正在尝试在 Qt 中创建一个类似于 impoly(来自 matlab)的函数。现在,我有一个 QGraphicsView 的子类,并将虚函数“drawBackground”设置为: void roi
我有一个覆盖 QGraphicsScene 的 drawBackground 的类,但我的 drawBackground 实现从未被调用。 class CtrlCutScene : public QG
我是一名优秀的程序员,十分优秀!