C++ 用QtGui显示QImage

C++ 用QtGui显示QImage,c++,qt,qimage,qtgui,C++,Qt,Qimage,Qtgui,我对Qt还不熟悉,我正在尝试创建一个简单的GUI应用程序,一旦点击一个按钮,它就会显示一个图像 我可以在QImage对象中读取图像,但是有没有简单的方法来调用Qt函数,将QImage作为输入并显示它?据我所知,QPixmap用于显示图像,QImage用于读取图像。有QPixmap::convertFromImage()和QPixmap::frommage()函数可以从QImage转换,一种常见的方法是使用QLabel::setPixmap()将图像添加到QLabel小部件,然后像显示任何其他小部

我对Qt还不熟悉,我正在尝试创建一个简单的GUI应用程序,一旦点击一个按钮,它就会显示一个图像


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

据我所知,
QPixmap
用于显示图像,
QImage
用于读取图像。有
QPixmap::convertFromImage()
QPixmap::frommage()
函数可以从
QImage
转换,一种常见的方法是使用
QLabel::setPixmap()
将图像添加到
QLabel
小部件,然后像显示任何其他小部件一样显示
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();
}
#包括
int main(int argc,char*argv[])
{
QApplication应用程序(argc、argv);
QPixmap pm(“your image.jpg”);
QLabel-lbl;
lbl.setPixmap(pm);
lbl.show();
返回app.exec();
}

显示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();
}
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);
}
#包括
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
我的形象;
myImage.load(“test.png”);
QLabel-myLabel;
setPixmap(QPixmap::frommage(myImage));
myLabel.show();
返回a.exec();
}

谢谢大家,我找到了方法,这和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);
}

使用
QLabel
绘制图像对我来说似乎有点困难。对于较新版本的Qt,您可以使用
QGraphicsView
小部件。在Qt Creator中,将一个
图形视图
小部件拖动到您的UI上,并将其命名为某物(在下面的代码中它被命名为
mainImage
)。在
mainwindow.h
中,将如下内容作为
private
变量添加到
mainwindow
类中:

QGraphicsScene *scene;
QPixmap image;
然后只需编辑
mainwindow.cpp
,并使构造函数如下所示:

#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();
}
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);
}

非常感谢,这是非常好的工作,我只是把它内的按钮回调。谢谢。我想知道一个不那么笨拙的方法来自己做这件事。也许我有点奇怪,但我认为标签应该是标签,而不是图片。但对于每秒显示大量图像来说,这似乎不是很方便:(