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