Display QImage with QtGui

后端 未结 5 1422
忘了有多久
忘了有多久 2020-12-02 09:01

I am new to Qt, and I am trying to create a simple GUI Application that displays an image once a button has been clicked on.

I can read the image in a QImage

相关标签:
5条回答
  • 2020-12-02 09:48

    One common way is to add the image to a QLabel widget using QLabel::setPixmap(), and then display the QLabel as you would any other widget. Example:

    #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();
    }
    
    0 讨论(0)
  • 2020-12-02 09:49

    Simple, but complete example showing how to display QImage might look like this:

    #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();
    }
    
    0 讨论(0)
  • 2020-12-02 09:49

    Thanks All, I found how to do it, which is the same as Dave and Sergey:

    I am using QT Creator:

    In the main GUI window create using the drag drop GUI and create label (e.g. "myLabel")

    In the callback of the button (clicked) do the following using the (*ui) pointer to the user interface window:

    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);
    }
    
    0 讨论(0)
  • 2020-12-02 09:57

    As far as I know, QPixmap is used for displaying images and QImage for reading them. There are QPixmap::convertFromImage() and QPixmap::fromImage() functions to convert from QImage.

    0 讨论(0)
  • 2020-12-02 10:04

    Drawing an image using a QLabel seems like a bit of a kludge to me. With newer versions of Qt you can use a QGraphicsView widget. In Qt Creator, drag a Graphics View widget onto your UI and name it something (it is named mainImage in the code below). In mainwindow.h, add something like the following as private variables to your MainWindow class:

    QGraphicsScene *scene;
    QPixmap image;
    

    Then just edit mainwindow.cpp and make the constructor something like this:

    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);
    }
    
    0 讨论(0)
提交回复
热议问题