viernes, 20 de febrero de 2009

Mostrar/ Abrir una imagen en Qt/C++

Al tratar de mostrar una imagen en Qt, el primer problema que nos encontramos es que no sabemos cual objeto usar para mostrar la imagen, y esto es porque no hay uno especifico para este fin en Qt.

Lo que podemos hacer es mostrar la imagen en el canvas de un QLabel y agregar unas pocas líneas de código.

Entonces, el primer paso es agregar al formulario un QLabel (en diseño), y vamos a ponerle de nombre image1 (nunca olvidar que es de tipo QLabel *)

En el código,agregar las siguientes líneas:

[sourcecode language='cpp']QString imagefilename = QFileDialog::getOpenFileName( this,"Image to
open",  path,"Images (*.bmp *.png *.xpm *.jpg)");
QImage   QImagen;
QImagen.load ( imagefilename);
Image1->setPixmap(QPixmap::fromImage(QImagen)); [/sourcecode]

y listo!

La primera línea declara un Qstring que usaremos para almacenar el nombre del fichero de la imagen que vamos a mostrar. En este caso cargamos esa string a partir de un cuadro de dialogo en el que sólo podemos seleccionar archivos de extensión *.bmp *.png *.xpm  y *.jpg.

En la siguiente línea declaramos un objeto QImagen de tipo QImage, que nos sirve para abrir t almacenar la imagen, lo cual se hace con la línea posterior.

Por último, se carga la imagen al canvas del QLabel.

3 comentarios:

  1. hola, muy bueno!, me funciono! gracias

    ResponderEliminar
  2. me bastó lo siguiente para cargar 6 imágenes:

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);

    QPixmap img1("/home/pi/Pictures/Iconos/N1_A.png");
    QPixmap img2("/home/pi/Pictures/Iconos/N1_B.png");
    QPixmap img3("/home/pi/Pictures/Iconos/N2_A.png");
    QPixmap img4("/home/pi/Pictures/Iconos/N2_B.png");
    QPixmap img5("/home/pi/Pictures/Iconos/N3_A.png");
    QPixmap img6("/home/pi/Pictures/Iconos/N3_B.png");
    ui->Image1->setPixmap(img1);
    ui->Image2->setPixmap(img2);
    ui->Image3->setPixmap(img3);
    ui->Image4->setPixmap(img4);
    ui->Image5->setPixmap(img3);
    ui->Image6->setPixmap(img4);
    ui->Image7->setPixmap(img5);
    ui->Image8->setPixmap(img6);
    }

    ResponderEliminar
  3. en linux, en una raspberry pi.

    Muchas gracias por tu aporte.

    ResponderEliminar