50

我是 Qt 的新手,我正在尝试创建一个简单的 GUI 应用程序,一旦单击按钮就会显示图像。

我可以读取QImage对象中的图像,但是有什么简单的方法可以调用一个以QImage为输入并显示它的 Qt 函数吗?

4

5 回答 5

78

显示如何显示 QImage 的简单但完整的示例可能如下所示:

#include <QtGui/QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QImage myImage;
    myImage.load("test.png");

    QLabel myLabel;
    myLabel.setPixmap(QPixmap::fromImage(myImage));

    myLabel.show();

    return a.exec();
}
于 2010-12-17T20:23:40.057 回答
29

使用 a 绘制图像QLabel对我来说似乎有点杂乱无章。使用较新版本的 Qt,您可以使用QGraphicsView小部件。在 Qt Creator 中,将一个Graphics View小部件拖到您的 UI 上并为其命名mainImage(在下面的代码中命名)。在mainwindow.h中,将以下内容作为private变量添加到您的MainWindow类中:

QGraphicsScene *scene;
QPixmap image;

然后只需编辑mainwindow.cpp并使构造函数如下所示:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    image.load("myimage.png");
    scene = new QGraphicsScene(this);
    scene->addPixmap(image);
    scene->setSceneRect(image.rect());

    ui->mainImage->setScene(scene);
}
于 2013-08-02T18:46:53.537 回答
14

一种常见的方法是使用 将图像添加到QLabel小部件QLabel::setPixmap(),然后QLabel像显示任何其他小部件一样显示 。例子:

#include <QtGui>

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  QPixmap pm("your-image.jpg");
  QLabel lbl;
  lbl.setPixmap(pm);
  lbl.show();
  return app.exec();
}
于 2010-12-17T20:15:28.780 回答
8

谢谢大家,我找到了方法,这与 Dave 和 Sergey 相同:

我正在使用 QT Creator:

在主 GUI 窗口中使用拖放 GUI 创建并创建标签(例如“myLabel”)

在按钮(单击)的回调中,使用指向用户界面窗口的 (*ui) 指针执行以下操作:

void MainWindow::on_pushButton_clicked()
{
     QImage imageObject;
     imageObject.load(imagePath);
     ui->myLabel->setPixmap(QPixmap::fromImage(imageObject));

     //OR use the other way by setting the Pixmap directly

     QPixmap pixmapObject(imagePath");
     ui->myLabel2->setPixmap(pixmapObject);
}
于 2010-12-17T20:37:46.980 回答
4

据我所知,QPixmap用于显示图像和QImage阅读它们。有QPixmap::convertFromImage()QPixmap::fromImage()函数可以从QImage.

于 2010-12-17T20:09:53.813 回答