我希望,从文档中,这个片段
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QGraphicsView *v = new QGraphicsView(new QGraphicsScene);
setCentralWidget(v);
QGraphicsRectItem *r1 = v->scene()->addRect(QRectF(100,100, 200,200), QPen(), QBrush(Qt::red));
QGraphicsRectItem *r2 = new QGraphicsRectItem(r1);
r2->setRect(QRectF(10,10, 50,50));
r2->setBrush(QBrush(Qt::blue));
}
会在红色矩形内绘制一个蓝色矩形,结果如下:我错过了什么吗?
最佳答案
是的。
在 setRect()
上调用 QGraphicsRectItem
实际上并没有改变它的 pos()
,它只是改变了它绘制的矩形的位置,但项目的位置没有改变。因此,您的 r1
的 pos 为 (0, 0),但其矩形绘制在与其 pos()
偏移的 (100, 100) 处。
为避免混淆,通常更容易将 rect 保留在 (0, 0) 并在 setPos()
上调用 QGraphicsRectItem
以将其移动到您想要的位置。
关于Qt 嵌套 QGraphicsItem 坐标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16445532/