Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: alexlogvinenkoit от Ноябрь 01, 2011, 11:42



Название: Отрисовка QImage
Отправлено: alexlogvinenkoit от Ноябрь 01, 2011, 11:42
Доброе время суток!

Есть у меня класс, наследующийся от QWidget, который хранит в себе QLabel...
Есть такой вот метод в этом классе:

Код:
void Widget::SetImage(QString image_path)
{
    QImage img;
    if(img.load(image_path) == true)
    {
        img.scaled(150, 200, Qt::KeepAspectRatio, Qt::SmoothTransformation);
        QPixmap pix = QPixmap::fromImage(img, Qt::AutoColor);
        this->lbImage->setPixmap(pix);
    }
    else
    {
        img.load(QString("images/none.jpg"));
        img.scaled(150, 200, Qt::KeepAspectRatio, Qt::SmoothTransformation);
        QPixmap pix = QPixmap::fromImage(img, Qt::AutoColor);
        this->lbImage->setPixmap(pix);
    }
}

Загрузка изображения не происходит...
Вот еще пишет: QPixmap: It is not safe to use pixmaps outside the GUI thread

Можно, конечно, сделать так: lbImage->setText(QString("<img src = \"image_path.jpg\" />")), но изображение должно подстраиваться под размер и сохранять форму...

Подскажите, please.
Спасибо!


Название: Re: Отрисовка QImage
Отправлено: GreatSnake от Ноябрь 01, 2011, 11:50
Вот еще пишет: QPixmap: It is not safe to use pixmaps outside the GUI thread
А из каких соображений работа с QPixmap делается не в GUI нитке?


Название: Re: Отрисовка QImage
Отправлено: alexlogvinenkoit от Ноябрь 01, 2011, 11:57
В смысле? Мне нужно отрисовать картинку в тот момент, когда мне это нужно, поэтому сделал метод, который потом просто вызываю...


Название: Re: Отрисовка QImage
Отправлено: GreatSnake от Ноябрь 01, 2011, 12:01
В смысле? Мне нужно отрисовать картинку в тот момент, когда мне это нужно, поэтому сделал метод, который потом просто вызываю...
Дык вот тебе Qt и говорит, что работать с QPixmap как раз нельзя в тот момент, когда тебе это нужно, т.е. не в GUI треде.


Название: Re: Отрисовка QImage
Отправлено: alexlogvinenkoit от Ноябрь 01, 2011, 12:07
Не, он говорит, что это есть небезопасно... А что еще за GUI поток? Мне что, чтобы просто отрисовать картинку нужно завести слот и посылать сигнал?


Название: Re: Отрисовка QImage
Отправлено: alexlogvinenkoit от Ноябрь 01, 2011, 14:58
Нашел!
Код:
QImage image;
if(image.load(image_path) == true)
{
    image = image.scaled(150, 200, Qt::KeepAspectRatio, Qt::SmoothTransformation);
    QPicture pic;
    QPainter painter(&pic);
    painter.drawImage(0, 0, image);
    lbImage->setPicture(pic);
}