QGraphicsObject не отображает QPixmap

Я разрабатываю очень простое приложение на win7 и работаю на win8. Когда я запускаю Win7, он показывает растровое изображение, нарисованное моим подклассом QGraphicsObject. Однако, когда я копирую exe и dll на свой планшет, он не показывает растровое изображение, но все остальное остается прежним.

Другая проблема заключается в том, что когда я выхожу из приложения, оно говорит, что оно неожиданно закрыто.

Вот соответствующие части

myImage::myImage(QGraphicsObject *parent) :
QGraphicsObject(parent)
{
    pxm = new QPixmap("://images/flower.jpg");
    setScale(0.5);
}

QRectF myImage::boundingRect() const
{
    QRectF rect(0,0,pxm->width(),pxm->height());
    return rect;
}

void myImage::paint( QPainter* painter,
                     const QStyleOptionGraphicsItem* /*option*/,
                     QWidget* /*widget*/ )
{
    painter->drawPixmap( 0, 0, pxm->width(), pxm->height(), *pxm );
}

А вот и основная функция

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QGraphicsScene scene;

    myImage img;
    scene.addItem(&img);

    QGraphicsView view(&scene);

    QWidget window;
    window.setFixedHeight(400);
    window.setFixedWidth(500);
    window.setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);

    QPushButton button("Quit");
    QObject::connect(&button,SIGNAL(clicked()),&app,SLOT(quit()));

    QVBoxLayout layout;
    layout.addWidget(&view);
    layout.addWidget(&button);

    window.setLayout(&layout);
    window.show();

    return app.exec();
}

person uLtRaLoVeR    schedule 28.08.2013    source источник


Ответы (1)


Проблема здесь в том, что вы используете изображение в формате jpeg, которое не является родным для Qt. При установке Qt вы найдете папку plugins с папкой под названием «imageformats». Если скопировать папку библиотек в путь к исполняемому файлу (при условии Windows), то это должно сработать. Аналогичное обсуждение находится здесь.

В качестве альтернативы используйте формат изображения, отличный от jpeg.

person TheDarkKnight    schedule 28.08.2013