Я создаю приложение сопоставления на основе графического представления. Все работает отлично, за исключением того, что некоторые линии исчезают при перетаскивании. Кажется, что предмет оценивается с точки зрения, но на самом деле только часть его. Ниже приведены скриншоты.QGraphicsItem исчезает при перетаскивании представления
QGraphicsView
Я подклассы и QGraphicsItem
, добавляют элементы в сцене, который соединен для просмотра. Чтобы реализовать функцию перетаскивания, я просто использую setDragMode()
в конструкторе подкласса.
И в MapShape.cpp:
QRectF Polyline::boundingRect() const
{
return QRectF(minX-pen.width()/2, minY-pen.width()/2, maxX-minX+pen.width(), maxY-minY+pen.width());
}
void Polyline::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
pen.setCosmetic(true);
painter->setPen(pen);
for(auto iter = points.begin(); iter != points.end()-1; ++iter)
{
painter->drawLine(*iter, *(iter+1));
}
}
Может кто-нибудь помочь? Спасибо!
Спасибо, что напомнили мне об ограничении. Я просто ошибочно вычисляю границы, и теперь проблема решена :) –