Упрощение программы Qt, и у меня возникают проблемы с отображением изображения в Qt с использованием QGraphicsScene
Оба этих сегмента кода загружаются в изображение. Код 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();
}
1 ответ
Хотите загрузить одно и то же изображение в обеих версиях кода? Если да, вы должны использовать тот же путь к этому изображению.
В первой версии вашего кода вы используете ":/images/2.png" в качестве источника изображения. Это путь, указывающий на файл в системе ресурсов Qt. Возможно, в вашем проекте есть файл.qrc, содержащий желаемый файл изображения.
Вы должны использовать тот же путь во второй версии и иметь тот же файл.qrc, скомпилированный в проект.