1

QGraphicsSceneを使用してQGraphicsViewに画像を表示したい。私のコードは非常に基本的です:

QGraphicsScene* scene = new QGraphicsScene(this);
scene->addPixmap(QPixmap(qApp->applicationDirPath() +"/france.gif"));
ui->myGraphicsView->setScene(scene);
ui->myGraphicsView->fitInView(scene->sceneRect());

私の問題は、私の写真のサイズが間違っていることです。それは非常に小さく、プロポーションが間違っていて、GraphicsViewの中央にあります。qDebugを使用すると、画像が正常に読み込まれ、サイズが約100x800pxであることがわかります。私のgraphicsViewは小さいので、GraphicsViewのサイズに合わせて画像のサイズを変更したいと思います。

graphicsViewはメインウィンドウフォームで設定され、シーンはヘッダーで宣言されます: "QGraphicsScenescene;"

私は世界ですべてが可能であることを試みます(私は思う)が、graphicsViewは常に空白であるか、画像の小さなバージョンが含まれています。インターネットのいくつかのコードをコピーして貼り付けると、常にこの問題が発生します。私もこの例を試してみます:Qt GUI開発-QGraphicsViewを使用して2Dグリッドを表示する、同じ問題...

多分私はとてもとても疲れていますが、何が悪いのか本当にわかりません。お願い助けて :)

4

2 に答える 2

1

sceneRect()特に設定しない限り、思った通りにならないかもしれません。また、画像を歪める可能性のある通話が欠落aspectRatioModeしてfitInviewいるため、「小さな」外観になることがあります。

QGraphicsScene* scene = new QGraphicsScene(this);
QGraphicsPixmapItem p = scene->addPixmap(QPixmap(qApp->applicationDirPath() +"/france.gif"));
ui->myGraphicsView->setScene(scene);
ui->myGraphicsView->fitInView(p, Qt::KeepAspectRatio);
于 2012-10-13T06:02:58.047 に答える
0

私の経験では、シーンウィンドウが表示される前にfitInViewを実行しようとすると、表示される画像は非常に小さくなります。技術的には、sceneRectのサイズは、実際に表示されるまで、希望どおりに設定されません。したがって、fitInViewを適切に使用する前に、シーンウィンドウを表示させる必要があります。

さて、私は解決策がここで利用可能だと思います Qt5 C ++ QGraphicsView:画像がビューフレームに適合しません

于 2013-11-23T01:41:01.497 に答える