Просмотреть изображение по нажатию кнопки. кварты
Я создал ярлык в своем главном окне, и его размер установлен в 200x300px. Теперь по нажатию кнопки мне нужно просмотреть изображение в нем. вот функция слота кнопки.
void MainWindow::function1(){
QImage img;
img.loadFromData("test.jpg");
img = img.scaled(200, 300, Qt::KeepAspectRatio, Qt::SmoothTransformation);
label->setPixmap(QPixmap::fromImage(img));
}
проблема в том, что это компилируется без ошибок, но не отображает изображение. вставил, когда кнопка нажата говорит QImage::scaled: Image is a null image
в IDE я новичок в QT. Буду очень благодарен за любой совет.
благодарю вас
2 ответа
Используя QImage
необходимо, если вы обрабатываете изображения вне вашего потока GUI. Так же loadFromData()
Функция выглядит так, как будто она используется для передачи большого массива байтов, а не имени файла.
Вот как я мог бы сделать это с QPixmap.
QPixmap pix;
bool loaded = pix.load("test.jpg");
if(loaded == false)
{
label->setText("Failed to load test.jpg from" + QDir::currentPath());
}
else
{
pix = pix.scaled(200, 300, Qt::KeepAspectRatio, Qt::SmoothTransformation);
label->setPixmap(pix);
}
Вы также можете заменить 200 и 300 на label->width()
а также label->height()
, Масштабирование растрового изображения таким способом выглядит лучше, но вы также можете просто установить растровое изображение и затем использовать label->setScaledContents(true)
Вместо
img.loadFromData("test.jpg");
использование
img.load("test.jpg");
если вы загружаете из QIODevice.