Qt:使调整大小事件不移动场景中的对象
Qt: make resize event do not move the objects on the scene
我有以下代码,它创建了一个场景和一个绿色矩形(见下图)。问题是,当我调整 window 大小时,我希望矩形留在原处,但它会随之移动。我不知道从哪里开始:我需要弄乱场景、视图、调整事件大小甚至矩形本身吗?我尝试使用视图调整大小策略,但没有效果。提前致谢!
#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();
}
App window
您可以使用 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();
}
我有以下代码,它创建了一个场景和一个绿色矩形(见下图)。问题是,当我调整 window 大小时,我希望矩形留在原处,但它会随之移动。我不知道从哪里开始:我需要弄乱场景、视图、调整事件大小甚至矩形本身吗?我尝试使用视图调整大小策略,但没有效果。提前致谢!
#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();
}
App window
您可以使用 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();
}