Qt QGraphicsItem 在单独的 class 的 boundingRect() 内绘制多边形?
Qt QGraphicsItem drawing a polygon within the boundingRect() of separate class?
我在一个新的 class 中创建了一个 GraphicsItem 并绘制了一个多边形,但是,它没有在 class 的 boundingRect() 内部绘制,而是在主视图上绘制坐标处的 GraphicsView 我希望它会在 boundingRect() 内绘制。
Detector::Detector()
{
Pressed = false; //Initally the pressed boolean is false, it is not pressed
setFlag(ItemIsMovable);
}
QRectF Detector::boundingRect() const
{
return QRectF(780,425,70,40);
}
void Detector::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QRectF ItemBoundary = boundingRect();
QBrush *fillBrush = new QBrush(QColor(83,71,65));
QPolygon DetectorPolygon;
DetectorPolygon << QPoint(0,0);
DetectorPolygon << QPoint(20,10);
DetectorPolygon << QPoint(70,10);
DetectorPolygon << QPoint(70,20);
DetectorPolygon << QPoint(20,20);
DetectorPolygon << QPoint(0,40);
QPen borderPen;
borderPen.setWidth(2);
borderPen.setColor(QColor(152,133,117));
painter->setBrush(*fillBrush);
painter->setPen(borderPen);
painter->drawPolygon(DetectorPolygon);
// painter->fillRect(ItemBoundary,*fillBrush);
// painter->drawRect(ItemBoundary);
}
最后两行未注释掉时会用一个矩形填充 boundingRect(),与上面的多边形不同,我能够将 ItemBoundary 变量传递给它。
如何将 ItemBoundary (=BoundingRect()) 也传递给多边形?
编辑:基本上我想绘制一个多边形,它可以移动并作为一个单独的 class,发送到我的主用户界面中的 QGraphicsView。
正如@FrankOsterfeld 所说:
painter->translate(780,425);
将项目移动到 boundingRect() 所在的区域。
我在一个新的 class 中创建了一个 GraphicsItem 并绘制了一个多边形,但是,它没有在 class 的 boundingRect() 内部绘制,而是在主视图上绘制坐标处的 GraphicsView 我希望它会在 boundingRect() 内绘制。
Detector::Detector()
{
Pressed = false; //Initally the pressed boolean is false, it is not pressed
setFlag(ItemIsMovable);
}
QRectF Detector::boundingRect() const
{
return QRectF(780,425,70,40);
}
void Detector::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QRectF ItemBoundary = boundingRect();
QBrush *fillBrush = new QBrush(QColor(83,71,65));
QPolygon DetectorPolygon;
DetectorPolygon << QPoint(0,0);
DetectorPolygon << QPoint(20,10);
DetectorPolygon << QPoint(70,10);
DetectorPolygon << QPoint(70,20);
DetectorPolygon << QPoint(20,20);
DetectorPolygon << QPoint(0,40);
QPen borderPen;
borderPen.setWidth(2);
borderPen.setColor(QColor(152,133,117));
painter->setBrush(*fillBrush);
painter->setPen(borderPen);
painter->drawPolygon(DetectorPolygon);
// painter->fillRect(ItemBoundary,*fillBrush);
// painter->drawRect(ItemBoundary);
}
最后两行未注释掉时会用一个矩形填充 boundingRect(),与上面的多边形不同,我能够将 ItemBoundary 变量传递给它。
如何将 ItemBoundary (=BoundingRect()) 也传递给多边形?
编辑:基本上我想绘制一个多边形,它可以移动并作为一个单独的 class,发送到我的主用户界面中的 QGraphicsView。
正如@FrankOsterfeld 所说:
painter->translate(780,425);
将项目移动到 boundingRect() 所在的区域。