Я создал ярлык в своем главном окне, и его размер установлен в 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. Буду очень благодарен за любой совет.
благодарю вас
Используя 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.