Я пытаюсь сделать функцию, похожую на impoly (из Matlab) в Qt. Прямо сейчас у меня есть подкласс 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? Если это так, кажется, что это вызывается только при перетаскивании элемента. Любые предложения о том, как я могу кодировать это лучше? Спасибо.
refimage
? - person KcFnMi   schedule 09.09.2019