просмотреть изображение по нажатию кнопки. кварты

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

благодарю вас

1

Решение

Используя 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)

2

Другие решения

вместо

img.loadFromData("test.jpg");

использование

img.load("test.jpg");

если вы загружаете из QIODevice.

1

По вопросам рекламы [email protected]