web-dev-qa-db-fra.com

Qt jpg affichage de l'image

Je souhaite afficher une image .jpg dans une interface utilisateur Qt. Je l'ai vérifié en ligne et j'ai trouvé http://qt-project.org/doc/qt-4.8/widgets-imageviewer.html . Je pensais que Graphics View ferait la même chose, et aussi il a un codec pour afficher la vidéo. Comment afficher des images à l'aide de la vue graphique? Je suis passé par les bibliothèques, mais comme je suis un débutant dans Qt, je ne peux pas trouver un indice pour commencer. Pouvez-vous me diriger vers des ressources/exemples sur la façon de charger et d'afficher des images dans Qt?

Merci.

51
Lily
#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 marcher. :) La liste des formats supportés peut être trouvée ici

39
Wojciech Bederski

Vous pouvez 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);

...

Toutes mes excuses, cela utilise Jambi (Qt pour Java), donc la syntaxe est différente, mais la théorie est la même.

42
Ben L

Si la seule chose que vous voulez faire est de déposer une image sur un widget sans la complexité de l'API graphique, vous pouvez simplement créer un nouveau QWidget et définir l'arrière-plan avec StyleSheets. Quelque chose comme ça:

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

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

Le plus simple est d’utiliser QLabel pour cela:

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QLabel label("<img src='image.jpg' />");
    label.show();
    return a.exec();
}
4
Vanuan
  1. Ajoutez une étiquette (un QLabel) à la boîte de dialogue dans laquelle vous souhaitez afficher l'image. Ce QLabel affichera réellement l'image. Redimensionnez-le à la taille souhaitée pour l'image.

  2. Ajoutez l'image à vos ressources dans votre projet.

  3. Allez maintenant dans les propriétés de QLabel et sélectionnez l'image que vous avez ajoutée aux ressources pour la propriété pixmap. Assurez-vous de vérifier la propriété suivante scaledContents pour réduire la taille de l'image à la taille souhaitée.

C'est tout, l'image va maintenant apparaître.

3
zar

Je comprends votre frustration. Le "widget de vue graphique" n’est pas la meilleure façon de le faire. Oui, cela peut être fait, mais c’est presque exactement la même chose que d’utiliser une étiquette (pour ce que vous voulez, de toute façon) maintenant que toutes les façons énumérées fonctionnent. mais...

Pour vous et tous ceux qui sont susceptibles de rencontrer cette question, voici le moyen le plus simple de le faire (ce que vous demandez de toute façon).

QPixmap pix("Path\\path\\entername.jpeg");
    ui->label->setPixmap(pix);

}

3
Oogle berries

Utiliser QPainter et QImage pour peindre sur un widget window (QMainWindow) (juste une autre méthode)

class MainWindow : public QMainWindow
{    
    public:
        MainWindow();
    protected:
        void paintEvent(QPaintEvent* event) override;

    protected:
        QImage image = QImage("/path/to/image.jpg");
};

// for convenience resize window to image size
MainWindow::MainWindow()
{
    setMinimumSize(image.size());
}

void MainWindow::paintEvent(QPaintEvent* event)
{
    QPainter Painter(this);
    QRect rect = event->rect();
    Painter.drawImage(rect, image, rect);
}


int main(int argc, char** argv)
{
    QApplication a(argc, argv);

    MainWindow mainWindow;
    mainWindow.show();
    return a.exec();
}
1
Arch Linux Tux