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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top