c++ qt qimage qtgui

c++ - Mostrar QImage con QtGui



(5)

Soy nuevo en Qt, y estoy tratando de crear una aplicación GUI simple que muestre una imagen una vez que se ha hecho clic en un botón.

Puedo leer la imagen en un objeto QImage , pero ¿hay alguna manera simple de llamar a una función Qt que toma QImage como entrada y la muestra?


Dibujar una imagen usando QLabel parece un poco difícil. Con las versiones más nuevas de Qt puedes usar un widget QGraphicsView . En Qt Creator, arrastre un widget Graphics View a su UI y mainImage nombre (se llama mainImage en el código siguiente). En mainwindow.h , agregue algo como lo siguiente como variables private a su clase MainWindow :

QGraphicsScene *scene; QPixmap image;

Luego solo edita mainwindow.cpp y haz que el constructor sea algo como esto:

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


Gracias a todos, encontré cómo hacerlo, que es lo mismo que Dave y Sergey:

Estoy usando QT Creator:

En la ventana principal de la GUI, cree utilizando la GUI de la función de arrastrar y cree una etiqueta (por ejemplo, "myLabel")

En la devolución de llamada del botón (haciendo clic) haga lo siguiente usando el puntero (* ui) a la ventana de la interfaz del usuario:

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


Hasta donde yo sé, QPixmap se usa para mostrar imágenes y QImage para leerlas. Hay QPixmap::convertFromImage() y QPixmap::fromImage() para convertir desde QImage .


Un ejemplo simple pero completo que muestra cómo visualizar QImage podría verse así:

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


Una forma común es agregar la imagen a un widget QLabel usando QLabel::setPixmap() , y luego mostrar el QLabel como lo haría con cualquier otro widget. Ejemplo:

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