Qt:使调整大小事件不移动场景中的对象



我有下面的代码,它创建了一个场景和一个绿色矩形(见下图(。问题是,当我调整窗口大小时,我希望矩形保持原位,但它会随之移动。我不知道从哪里开始:我需要处理场景、视图、调整事件大小,甚至矩形本身吗?我试着使用视图大小调整策略,但没有效果。提前谢谢!

#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QGraphicsScene scene(QRectF(-100, -100, 300, 300));
QGraphicsView view(&scene);
QRectF bonds = scene.itemsBoundingRect();
view.fitInView(bonds, Qt::KeepAspectRatio);
view.centerOn(0, 0);
QGraphicsRectItem *rectItem =
scene.addRect(QRectF(-30, -30, 120, 80),
QPen(Qt::black),
QBrush(Qt::green)
);
rectItem->setFlags(QGraphicsItem::ItemIsMovable);
view.show();
return app.exec();
}

应用程序窗口

您可以使用view.setAlignment(Qt::AlignLeft | Qt::AlignTop);轻松修复此问题,此函数将场景的对齐设置为QGraphicsView的左上角。

这就是您的代码应该是什么样子。

#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QGraphicsScene scene(QRectF(-100, -100, 300, 300));
QGraphicsView view(&scene);
view.setAlignment(Qt::AlignLeft | Qt::AlignTop);
QGraphicsRectItem *rectItem =
scene.addRect(QRectF(-30, -30, 120, 80),
QPen(Qt::black),
QBrush(Qt::green)
);
rectItem->setFlags(QGraphicsItem::ItemIsMovable);
view.show();
return app.exec();
}

相关内容

  • 没有找到相关文章

最新更新