2010-12-17 89 views
36

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

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

回答

6

感谢所有,我发现如何做到这一点,这是一样的戴夫和Sergey:

我使用Qt创建者:

在主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); 
} 
2

据我所知,QPixmap用于显示图像和QImage阅读它们。有QPixmap::convertFromImage()QPixmap::fromImage()函数转换为QImage

10

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

非常感谢,这是工作非常精细,我只是把它移到了按钮的回调中。 – Karim 2010-12-17 20:39:41

63

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

图纸用QLabel似乎有点像一个杂牌对我的形象。使用更新版本的Qt,您可以使用一个QGraphicsView小部件。在Qt Creator中,将一个Graphics View小部件拖放到您的用户界面上并将其命名(在下面的代码中将其命名为)。在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); 
} 
+1

谢谢。我很想知道自己做的这种做法不太方便。也许我很奇怪,但我认为一个标签应该是一个标签,而不是一张图片。 – Tyler 2014-06-20 08:47:23

+0

这对于每秒显示大量图像来说似乎并不方便: – 2017-03-02 21:12:34