按钮单击查看图像。 QT

时间:2012-12-14 18:43:23

标签: c++ image qt pixmap

我在主窗口中创建了一个标签,其大小设置为200x300px。现在点击按钮我需要在其中查看图像。这是按钮的插槽功能。

 void MainWindow::function1(){
QImage img;
img.loadFromData("test.jpg");
img = img.scaled(200, 300, Qt::KeepAspectRatio, Qt::SmoothTransformation);
label->setPixmap(QPixmap::fromImage(img));
}

问题是这个编译没有错误,但没有显示图像。当按下按钮时,它会在IDE中显示QImage::scaled: Image is a null image 我是新的qt。我会非常感谢任何建议。

谢谢

2 个答案:

答案 0 :(得分:2)

如果要处理GUI线程之外的图像,则必须使用QImage。此外,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()label->height()替换200和300。以这种方式缩放像素图看起来最好,但您也可以设置像素图,然后使用label->setScaledContents(true)

答案 1 :(得分:1)

而不是

img.loadFromData("test.jpg");

使用

img.load("test.jpg");

如果您是从QIODevice加载的。