Russian Qt Forum
Сентябрь 30, 2024, 08:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отрисовка QImage  (Прочитано 5518 раз)
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.
Спасибо!
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Ноябрь 01, 2011, 11:50 »

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

Qt 5.11/4.8.7 (X11/Win)
alexlogvinenkoit
Гость
« Ответ #2 : Ноябрь 01, 2011, 11:57 »

В смысле? Мне нужно отрисовать картинку в тот момент, когда мне это нужно, поэтому сделал метод, который потом просто вызываю...
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Ноябрь 01, 2011, 12:01 »

В смысле? Мне нужно отрисовать картинку в тот момент, когда мне это нужно, поэтому сделал метод, который потом просто вызываю...
Дык вот тебе Qt и говорит, что работать с QPixmap как раз нельзя в тот момент, когда тебе это нужно, т.е. не в GUI треде.
Записан

Qt 5.11/4.8.7 (X11/Win)
alexlogvinenkoit
Гость
« Ответ #4 : Ноябрь 01, 2011, 12:07 »

Не, он говорит, что это есть небезопасно... А что еще за GUI поток? Мне что, чтобы просто отрисовать картинку нужно завести слот и посылать сигнал?
Записан
alexlogvinenkoit
Гость
« Ответ #5 : Ноябрь 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);
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 1.6 секунд. Запросов: 22.