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