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