Visualizzare QImage con QtGui
Domanda
Sono nuovo di Qt, e sto cercando di creare una semplice interfaccia grafica un'applicazione che visualizza un'immagine una volta un pulsante è stato cliccato.
I può leggere l'immagine in un oggetto QImage
, ma esiste un modo semplice per chiamare una funzione Qt che prende il QImage
come input, e di visualizzarlo?
Soluzione 4
Grazie a tutti, ho trovato come farlo, che è lo stesso di Dave e Sergey:
Sto usando Qt Creator:
Nella finestra principale della GUI creare utilizzando la GUI drag drop e creare etichetta (ad esempio "myLabel")
Nel callback del pulsante (cliccato) effettuare le seguenti operazioni utilizzando il puntatore (* ui) per la finestra di interfaccia utente:
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);
}
Altri suggerimenti
Semplice, ma esempio completo che mostra come visualizzare QImage potrebbe essere simile a questo:
#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();
}
Disegnare un'immagine utilizzando un QLabel
sembra un po 'un kludge per me. Con le nuove versioni di Qt è possibile utilizzare un widget QGraphicsView
. In Qt Creator, trascinare un widget sul vostro Graphics View
interfaccia utente e il nome qualcosa (prende il nome mainImage
nel seguente codice). In mainwindow.h
, aggiungere qualcosa come il seguente come variabili private
alla classe MainWindow
:
QGraphicsScene *scene;
QPixmap image;
Poi basta modificare mainwindow.cpp
e rendere il costruttore qualcosa di simile:
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);
}
Un modo comune è quello di aggiungere l'immagine di un widget di QLabel
utilizzando QLabel::setPixmap()
, e quindi visualizzare il QLabel
come si farebbe con qualsiasi altro widget. Esempio:
#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();
}
Per quanto ne so, QPixmap
viene utilizzato per la visualizzazione di immagini e QImage
per la loro lettura. Ci sono QPixmap::convertFromImage()
e QPixmap::fromImage()
funzioni per convertire da QImage
.