56 votes

Affichage d'image jpg Qt

Je veux afficher une image .jpg dans une interface utilisateur Qt. J'ai vérifié en ligne et trouvé https://doc.qt.io/archives/qt-4.8/qt-widgets-imageviewer-example.html. Je pensais que Graphics View ferait la même chose, et il a aussi des codecs pour afficher des vidéos. Comment afficher des images en utilisant Graphics View? J'ai parcouru les bibliothèques, mais comme je suis totalement novice en Qt, je ne trouve pas d'indice pour commencer. Pouvez-vous me diriger vers des ressources/exemples sur la façon de charger et afficher des images dans Qt?

Merci.

53voto

Ben L Points 1208

Vous pourriez attacher l'image (sous forme de pixmap) à une étiquette puis l'ajouter à votre mise en page...

...

QPixmap image("blah.jpg");

QLabel *imageLabel = new QLabel();
imageLabel->setPixmap(image);

mainLayout.addWidget(imageLabel);

...

Désolé, ceci utilise Jambi (Qt pour Java) donc la syntaxe est différente, mais la théorie est la même.

44voto

Wojciech Bederski Points 2544
#include ...

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QGraphicsScene scene;
    QGraphicsView view(&scene);
    QGraphicsPixmapItem item(QPixmap("c:\\test.png"));
    scene.addItem(&item);
    view.show();
    return a.exec();
}

Cela devrait fonctionner. :) La liste des formats pris en charge peut être trouvée ici

33 votes

Comment pouvons-nous utiliser ceci avec une interface utilisateur créée dans QT Creator?

4 votes

Veuillez noter que pour Qt 4.6 ce code contient une erreur. Essayez celui-ci : int main(int argc, char *argv[]) { QString fileName("C:/aaa..gif"); QApplication a(argc, argv); QGraphicsScene scene; scene.addPixmap(QPixmap(fileName)); QGraphicsView view(&scene); view.show(); return a.exec(); }

1 votes

Comment pouvez-vous ajouter un GraphicsView à un objet de mise en page?

14voto

user251390 Points 71

Si la seule chose que vous voulez faire est d'ajouter une image à un widget sans la complexité de l'API graphique, vous pouvez également créer un nouveau QWidget et définir l'arrière-plan avec des feuilles de style. Quelque chose comme ceci :

MainWindow::MainWindow(QWidget \*parent) : QMainWindow(parent)
{
    ...
    QWidget \*pic = new QWidget(this);
    pic->setStyleSheet("background-image: url(test.png)");
    pic->setGeometry(QRect(50,50,128,128));
    ...
}

4voto

Vanuan Points 4751

Je veux afficher une image .jpg dans une interface utilisateur Qt

La façon la plus simple est d'utiliser QLabel pour cela :

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QLabel label("");
    label.show();
    return a.exec();
}

3voto

Oogle berries Points 11

Je comprends votre frustration, le "widget Graphics view" n'est pas la meilleure façon de le faire, oui c'est possible, mais c'est presque exactement la même chose que d'utiliser une étiquette (pour ce que vous voulez de toute façon) maintenant toutes les façons répertoriées fonctionnent mais...

Pour vous et toute personne d'autre qui pourrait se poser cette question, la façon la plus simple de le faire (ce que vous demandez de toute façon) est la suivante.

QPixmap pix("Chemin\\chemin\\entrenom.jpeg");
    ui->label->setPixmap(pix);

}

0 votes

Ceci n'est pas complet, cela peut être très confus pour quelqu'un qui ne sait pas jouer avec des images.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X