QImage
对象本身并不直接显示在屏幕上,但你可以很容易地将它转换为 QPixmap
,然后使用 QLabel
或其他支持 pixmap 的 Qt 控件来显示它。QPixmap
是为屏幕显示而优化的图像表示,而 QImage
则提供了更多的图像处理能力,如像素访问、转换等。
以下是一个简单的示例,展示了如何将 QImage
转换为 QPixmap
并在 QLabel
上显示:
#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QLabel>
#include <QImage>
#include <QPixmap> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建一个 QWidget 作为主窗口 QWidget window; QVBoxLayout *layout = new QVBoxLayout(&window); // 创建一个 QLabel 来显示图片 QLabel *label = new QLabel(&window); // 假设你已经有了一个 QImage 对象,这里我们创建一个示例 QImage QImage image(100, 100, QImage::Format_ARGB32); image.fill(Qt::blue); // 填充为蓝色,仅作为示例 // 将 QImage 转换为 QPixmap QPixmap pixmap = QPixmap::fromImage(image); // 设置 QLabel 的 pixmap label->setPixmap(pixmap.scaled(200, 200, Qt::KeepAspectRatio, Qt::SmoothTransformation)); // 将 QLabel 添加到布局中 layout->addWidget(label); // 显示窗口 window.show(); // 进入 Qt 应用程序的主事件循环 return app.exec();
} #include "main.moc"
在这个示例中,我们首先创建了一个 QImage
对象,并将其填充为蓝色(仅作为示例)。然后,我们使用 QPixmap::fromImage()
方法将 QImage
转换为 QPixmap
。接着,我们将转换后的 QPixmap
设置为 QLabel
的 pixmap,并通过调用 scaled()
方法来调整其大小。最后,我们将 QLabel
添加到布局中,并显示窗口。
请注意,scaled()
方法是可选的,它用于调整 pixmap 的大小。如果你不需要调整大小,可以省略这一步。但是,在将 pixmap 设置为 QLabel
的内容时,考虑到 QLabel
的大小和布局,调整 pixmap 的大小通常是一个好主意。