我正在尝试在 Qt 中创建一个类似于 impoly(来自 matlab)的函数。现在,我有一个 QGraphicsView 的子类,并将虚函数“drawBackground”设置为:
void roiwindow::drawBackground(QPainter *painter, const QRectF &rect)
{
painter->save();
painter->drawImage(rect, *refimage);
painter->restore();
}
这很好用,基本上正是我想要的背景层。现在,我正在尝试添加最终将充当多边形节点的圆圈。我通过使用:
QGraphicsView *view = new QGraphicsView(this);
view->show();
QGraphicsEllipseItem *e1;
e1 = this->addEllipse(20, 20, 30, 30, QColor(0, 0, 0), Qt::white);
e1->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsMovable);
这就是我想要的。但是,有一个问题是,当我单击并拖动椭圆时,椭圆的背景是 *refimage 的缩小版本...这会在屏幕上留下一种条纹,但是当我单击另一个窗口时它会消失或最小化窗口。QGraphicsItem 是否也调用 drawBackground?如果是这样,它似乎只在拖动项目时调用它。关于如何更好地编码的任何建议?谢谢。