这两个代码段都加载到图像中。代码1,加载图像并具有缩放功能,代码2应该只加载图像。代码1工作正常,但当我试图简化它时,我失去了加载图像功能。出于某种原因,图像在被显示之前被破坏。
看起来它应该相当直接,但我似乎无法修复它。
代码1 :(这有效,但似乎过于复杂)
#include <QtGlobal>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#else
#include <QtGui>
#endif
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
QImage image(":/images/2.png");
QGraphicsScene* scene = new QGraphicsScene();
QGraphicsView* view = new QGraphicsView(scene);
QGraphicsPixmapItem* item = new QGraphicsPixmapItem(QPixmap::fromImage(image));
scene->setBackgroundBrush(QPixmap(":/images/2.png"));
scene->setBackgroundBrush(image.scaled(100,100,Qt::IgnoreAspectRatio,Qt::SmoothTransformation));
QGraphicsPixmapItem* pi = scene->addPixmap(QPixmap::fromImage(image).scaledToWidth(50));
QGraphicsEllipseItem *item2 = new QGraphicsEllipseItem( 0, &scene );
item2->setRect( -50.0, -50.0, 50, 100.0 );
scene->addItem(item2);
view->show();
return app.exec();
}
代码2 :(这是简化版本,但它已被破坏)
#include <QtGlobal>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#else
#include <QtGui>
#endif
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QImage myImage;
myImage.load("2.png");
QGraphicsScene* scene = new QGraphicsScene();
QGraphicsView* view = new QGraphicsView(scene);
QGraphicsPixmapItem* item = new QGraphicsPixmapItem(QPixmap::fromImage(myImage));
scene->addItem(item);
view->show();
return app.exec();
}
答案 0 :(得分:0)
是否要在两个版本的代码中加载相同的图像? 如果是,您还应该使用与此图像相同的路径。
在代码的第一个版本中,您使用“:/ images / 2.png”作为图像源。这是指向Qt资源系统中的文件的路径。您的项目中可能包含一个包含所需图像文件的.qrc文件。
您应该在第二个版本中使用相同的路径,并将相同的.qrc文件编译到项目中。