1

我在主窗口中创建了一个标签,其大小设置为 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 中是新的。我会非常感谢任何建议。

谢谢你

4

2 回答 2

2

QImage如果您在 GUI 线程之外处理图像,则必须使用 a 。此外,该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);
}

您可能还想用label->width()and替换 200 和 300 label->height()。以这种方式缩放像素图看起来最好,但您也可以设置像素图然后使用label->setScaledContents(true)

于 2012-12-14T19:20:57.977 回答
1

代替

img.loadFromData("test.jpg");

采用

img.load("test.jpg");

如果您从 QIODevice 加载。

于 2012-12-14T19:18:54.157 回答