Russian Qt Forum

Qt => Вопросы новичков => Тема начата: pavellyba от Июль 05, 2017, 17:40



Название: Как через слот передать виджет?
Отправлено: 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, в который и должна загрузиться картинка?



Название: Re: Как через слот передать виджет?
Отправлено: Apktyc от Июль 05, 2017, 18:07
Как через слот передать QLabel, в который и должна загрузиться картинка?
Что-то в формулировке явно не так, но Вам наверное надо просто получать в слоте изображение и вызывать отдельный метод для установки изображения в нужном виджете.

Как вообще этот слот вызывается, сигнала для подобного у QNetworkReply просто нет.


Название: Re: Как через слот передать виджет?
Отправлено: pavellyba от Июль 05, 2017, 18:23
Я новичок. Можно пример кода, как это реализовать?


Название: Re: Как через слот передать виджет?
Отправлено: Apktyc от Июль 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)
{
 А тут уже и устанавливаем полученное изображение в нужный виджет.
}
 


Название: Re: Как через слот передать виджет?
Отправлено: pavellyba от Июль 05, 2017, 18:48
Спасибо!