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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top