Afficher QImage avec QtGui
Question
Je suis nouveau à Qt, et je suis en train de créer un simple GUI application qui affiche une image une fois un bouton a été cliqué.
Je peux lire l'image dans un objet QImage
, mais est-il un moyen simple d'appeler une fonction Qt qui prend la QImage
en entrée, et l'affiche?
La solution 4
Merci à tous, je l'ai trouvé comment le faire, ce qui est le même que Dave et Sergey:
J'utilise QT Creator:
Dans la fenêtre principale de l'interface graphique crée en utilisant l'interface utilisateur graphique du glisser-déposer et de créer des étiquettes (par exemple, « MyLabel »)
Dans le rappel du bouton (cliqué), procédez comme suit en utilisant le (* ui) pointeur vers la fenêtre de l'interface utilisateur:
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);
}
Autres conseils
simple, mais complet exemple montrant comment afficher QImage pourrait ressembler à ceci:
#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();
}
Dessin d'une image à l'aide d'un QLabel
semble un peu bidouille pour moi. Avec les nouvelles versions de Qt, vous pouvez utiliser un widget QGraphicsView
. Dans Qt Creator, faites glisser un widget Graphics View
sur votre interface utilisateur et nommez-le quelque chose (il est nommé mainImage
dans le code ci-dessous). En mainwindow.h
, ajouter quelque chose comme ce qui suit en tant que variables private
à votre classe MainWindow
:
QGraphicsScene *scene;
QPixmap image;
Ensuite, il suffit modifier mainwindow.cpp
et faire le constructeur quelque chose comme ceci:
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);
}
Une façon courante est d'ajouter l'image à un QLabel
widget à l'aide QLabel::setPixmap()
, puis afficher le QLabel
comme vous le feriez pour tout autre gadget. Exemple:
#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();
}
Pour autant que je sache, QPixmap
est utilisé pour afficher des images et QImage
pour les lire. Il y a des fonctions de QPixmap::convertFromImage()
et QPixmap::fromImage()
pour convertir de QImage
.