用QtGui显示QImage

时间:2010-12-17 19:31:36

标签: c++ qt qimage qtgui

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

我可以在QImage对象中读取图像,但有没有简单的方法来调用以QImage作为输入的Qt函数并显示它?

5 个答案:

答案 0 :(得分:67)

简单但完整的示例显示如何显示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();
}

答案 1 :(得分:21)

使用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);
}

答案 2 :(得分:11)

一种常见的方法是使用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();
}

答案 3 :(得分:6)

谢谢大家,我发现了怎么做,这与戴夫和谢尔盖一样:

我正在使用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);
}

答案 4 :(得分:2)

据我所知,QPixmap用于显示图像,QImage用于阅读图像。有QPixmap::convertFromImage()QPixmap::fromImage()个函数可以从QImage转换。