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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как через слот передать виджет?  (Прочитано 3103 раз)
pavellyba
Гость
« : Июль 05, 2017, 17:40 »

Создал слот, который должен загружать изображение в QLabel
Код:
void MainWindow::replyFinishedIMG(const QLabel *img)
{
  QNetworkReply *reply=
    qobject_cast<QNetworkReply *>(sender());

  if (reply->error() == QNetworkReply::NoError)
  {
      QByteArray data = reply->readAll();
      QImage image = QImage::fromData(data);
      img->setPixmap(QPixmap::fromImage(image));
      img->setScaledContents(true);
  }
  else
  {
    // Выводим описание ошибки, если она возникает.
    qDebug() << (reply->errorString());
  }
  // разрешаем объекту-ответа "удалится"
  reply->deleteLater();
}

Как через слот передать QLabel, в который и должна загрузиться картинка?

Записан
Apktyc
Самовар
**
Offline Offline

Сообщений: 133


Просмотр профиля
« Ответ #1 : Июль 05, 2017, 18:07 »

Как через слот передать QLabel, в который и должна загрузиться картинка?
Что-то в формулировке явно не так, но Вам наверное надо просто получать в слоте изображение и вызывать отдельный метод для установки изображения в нужном виджете.

Как вообще этот слот вызывается, сигнала для подобного у QNetworkReply просто нет.
Записан
pavellyba
Гость
« Ответ #2 : Июль 05, 2017, 18:23 »

Я новичок. Можно пример кода, как это реализовать?
Записан
Apktyc
Самовар
**
Offline Offline

Сообщений: 133


Просмотр профиля
« Ответ #3 : Июль 05, 2017, 18:41 »

Слот для QNetworkReply::finished
Код
C++ (Qt)
void MainWindow::replyFinishedIMG()
{
 QNetworkReply *reply=
   qobject_cast<QNetworkReply *>(sender());
 
 if (reply->error() == QNetworkReply::NoError)
 {
     setImage(reply->readAll());
 }
 else
 {
   // Выводим описание ошибки, если она возникает.
   qDebug() << (reply->errorString());
 }
 // разрешаем объекту-ответа "удалится"
 reply->deleteLater();
}
 
И для установки на QLabel
Код
C++ (Qt)
void MainWindow::setImage(QByteArray ImageData)
{
 А тут уже и устанавливаем полученное изображение в нужный виджет.
}
 
« Последнее редактирование: Июль 05, 2017, 18:44 от Apktyc » Записан
pavellyba
Гость
« Ответ #4 : Июль 05, 2017, 18:48 »

Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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