Russian Qt Forum

Qt => Мультимедиа => Тема начата: Егор от Октябрь 29, 2014, 14:27



Название: На виджете не отображается изображение (QPixmap)
Отправлено: Егор от Октябрь 29, 2014, 14:27
Имеется 2 класса. В одном формируется главное окно, а в другом производится рисование на виджете.
Код рисования:
Код:
#include "picture.h"
#include <QtGui>

Picture::Picture(QWidget* wid):
    QWidget(wid)

{
}

void Picture::paintEvent(QPaintEvent *){
    QPainter paint;

    paint.begin(this);

    QPixmap picture("E:\\Projects\\Qt\\Graphics_BLA\\1.jpg");
    paint.drawPixmap(0,0,picture);

    paint.end();
    resize(550, 550);
}

Код главного виджета:
Код:
#include "graphics.h"
#include <QtGui>
#include "picture.h"

Graphics::Graphics(QWidget *wid):
    QWidget(wid),
    pribSpeed(0),
    vertSpeed(0),
    bortSpeed(0),
    biomHeight(0),
    geomHeight(0)
{
    QHBoxLayout* mainLay=new QHBoxLayout;   //Основной компановщик

    QHBoxLayout* groupLay=new QHBoxLayout;  //Компановщик для отображения групп
    //...
    Picture pict;
    QGroupBox* pictBox=new QGroupBox("Отображение");
    pictBox->setFixedSize(550, 550);

    QHBoxLayout* pictLay=new QHBoxLayout;
    pictLay->addWidget(&pict);
    pictBox->setLayout(pictLay);
    groupLay->addWidget(pictBox);
    //================================================

    setWindowTitle("Телеметрия");
    mainLay->addLayout(groupLay);
    setLayout(mainLay);

В итоге получаю такое окно (скриншот ниже).
Если создать только объект класса Picture и поместить его в другой виджет, без компановок и прочего, рисунок отображается.
Так где же здесь недочёт? Если нужно, могу весь код основного класса кинуть.


Название: Re: На виджете не отображается изображение (QPixmap)
Отправлено: gil9red от Октябрь 29, 2014, 14:32
Код:
Picture pict;
Выделите память под виджет в куче (Picture * pict = new Picture(); ) сейчас вы его в стеке создаете и после выхода из функции стек уничтожается и соответственно ваш виджет тоже убивается.


Название: Re: На виджете не отображается изображение (QPixmap)
Отправлено: Егор от Октябрь 29, 2014, 14:39
Код:
Picture pict;
Выделите память под виджет в куче (Picture * pict = new Picture(); ) сейчас вы его в стеке создаете и после выхода из функции стек уничтожается и соответственно ваш виджет тоже убивается.
Не помогло.


Название: Re: На виджете не отображается изображение (QPixmap)
Отправлено: gil9red от Октябрь 29, 2014, 14:41
Должно было помочь, давайте сюда архив с исходниками, у себя посмотрю )


Название: Re: На виджете не отображается изображение (QPixmap)
Отправлено: Егор от Октябрь 29, 2014, 14:44
А нет, простите, помогло. Просто путь до изображения забыл изменить).