【发布时间】:2011-11-06 02:07:26
【问题描述】:
我有一个 QGraphicsView 和一个 QGraphicsScene 像这样连接:
graphicsScene->setSceneRect(this->graphicsView->rect());
graphicsView->setScene(this->Scene);
然后我加载图像并将其添加到场景中:
QPixmap pixmap;
pixmap.load(fileName);
pixmap = pixmap.scaled(this->graphicsView->size());
QGraphicsPixmapItem* item = this->Scene->addPixmap(pixmap);
现在,如文档中所述,图像角位于 (0,0),这不是 graphicsScene 的角。我知道我可以通过以下方式定位生成的像素图:
item->setPos(this->Scene->sceneRect().x(), this->Scene->sceneRect().y());
但是,我似乎无法理解场景或视图的矩形坐标。谁能解释我如何将像素图移动到场景/视图的角落?
谢谢,
大卫
编辑:这是完整的表单构造函数。 QGraphicsView 是在 Qt Designer 中创建的,位于 GridLayout 内部:
Form::Form(QWidget *parent)
: QWidget(parent)
{
setupUi(this);
QGraphicsScene* scene = new QGraphicsScene;
scene->setSceneRect(this->graphicsView->rect());
this->graphicsView->setScene(scene);
QPixmap pixmap;
pixmap.load("image.png");
pixmap = pixmap.scaled(this->graphicsView->size());
scene->addPixmap(pixmap);
}
我也试过这个:
QGraphicsScene* scene = new QGraphicsScene;
this->graphicsView->setScene(scene);
QPixmap pixmap;
pixmap.load("/home/doriad/glasses.jpg");
QGraphicsPixmapItem * item = scene->addPixmap(pixmap);
this->graphicsView->fitInView (item);
但图像看起来很小,而不是像我期望的那样填满视图。谁能解释一下?
完整的项目和图片可在此处获得:daviddoria.com/Uploads/qt/QPixmapPosition
【问题讨论】:
-
您是对场景的角落感兴趣,还是对视图的角落感兴趣,不管它可能位于何处?
-
我只想要视图中的一个场景,所以理想情况下我希望场景的角落与视图的角落对齐 - 然后像素图的角落可以对齐它会是一样的。