Mostrar QImage con QtGui
Pregunta
Soy nuevo en Qt, y yo estoy tratando de crear una interfaz gráfica de usuario sencilla aplicación que muestra una imagen una vez al botón se ha hecho clic en.
Me puede leer la imagen de un objeto QImage
, pero ¿hay alguna manera simple de llamar a una función que toma el Qt QImage
como una entrada, y lo muestra?
Solución 4
Gracias a todos, he encontrado cómo hacerlo, lo que es lo mismo que Dave y Sergey:
Estoy usando Qt Creator:
En la ventana principal de la GUI crear utilizando la GUI de arrastrar y crear etiquetas (por ejemplo "myLabel")
En la devolución de llamada del botón (clic) los siguientes pasos utilizando el puntero (* ui) a la ventana de la interfaz de 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);
}
Otros consejos
simple, pero ejemplo completo con la forma de mostrar QImage podría tener este aspecto:
#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();
}
Dibujo de una imagen mediante un QLabel
parece un poco de un kludge a mí. Con las nuevas versiones de Qt puede utilizar un widget QGraphicsView
. En Qt Creator, arrastre un widget Graphics View
en la interfaz de usuario y el nombre de algo (que lleva el nombre mainImage
en el código de abajo). En mainwindow.h
, añadir algo como lo siguiente como variables private
a su clase MainWindow
:
QGraphicsScene *scene;
QPixmap image;
A continuación, sólo editar mainwindow.cpp
y hacer que el constructor 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);
}
Una forma común es añadir la imagen a un widget de QLabel
usando QLabel::setPixmap()
, y luego mostrar la QLabel
como lo haría con cualquier otro control. 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();
}
Por lo que yo sé, QPixmap
se utiliza para la visualización de imágenes y QImage
para leerlos. Hay QPixmap::convertFromImage()
y QPixmap::fromImage()
funciones para convertir desde QImage
.