web-dev-qa-db-ger.com

Qt-JPG-Bildanzeige

Ich möchte ein JPG-Bild in einer Qt-Benutzeroberfläche anzeigen. Ich überprüfte es online und fand http://qt-project.org/doc/qt-4.8/widgets-imageviewer.html . Ich dachte, dass Graphics View dasselbe tun wird, und es hat auch einen Codec zum Anzeigen von Videos. Wie werden Bilder in der Grafikansicht angezeigt? Ich habe die Bibliotheken durchgesehen, aber da ich ein absoluter Neuling in Qt bin, finde ich keinen Anhaltspunkt für den Anfang. Können Sie mich auf einige Ressourcen/Beispiele zum Laden und Anzeigen von Bildern in Qt verweisen?

Vielen Dank.

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();
}

Das sollte funktionieren. :) Liste der unterstützten Formate kann hier zu finden

39

Sie können das Bild (als Pixmap) an eine Beschriftung anhängen und dann Ihrem Layout hinzufügen ...

...

QPixmap image("blah.jpg");

QLabel imageLabel = new QLabel();
imageLabel.setPixmap(image);

mainLayout.addWidget(imageLabel);

...

Entschuldigung, dies verwendet Jambi (Qt für Java), daher ist die Syntax anders, aber die Theorie ist dieselbe.

42
Ben L

Wenn Sie nur ein Bild auf ein Widget ohne die Komplexität der Grafik-API ziehen möchten, können Sie auch einfach ein neues QWidget erstellen und den Hintergrund mit StyleSheets festlegen. Etwas wie das:

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

Ich möchte ein JPG-Bild in einer Qt-Benutzeroberfläche anzeigen

Der einfachste Weg ist, QLabel dafür zu verwenden:

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QLabel label("<img src='image.jpg' />");
    label.show();
    return a.exec();
}
4
Vanuan
  1. Fügen Sie dem Dialogfeld, in dem Sie das Bild anzeigen möchten, ein Label (ein QLabel) hinzu. Dieses QLabel zeigt das Bild tatsächlich an. Ändern Sie die Größe auf die Größe, in der das Bild angezeigt werden soll.

  2. Fügen Sie das Bild Ihren Ressourcen in Ihrem Projekt hinzu.

  3. Rufen Sie nun die QLabel-Eigenschaften auf und wählen Sie das Bild aus, das Sie den Ressourcen für die Eigenschaft pixmap hinzugefügt haben. Stellen Sie sicher, dass Sie die nächste Eigenschaft scaledContents markieren, um das Bild auf die gewünschte Größe zu verkleinern.

Das Bild wird nun angezeigt.

3
zar

Ich verstehe Ihre Frustration, dass das "Grafik-Ansicht-Widget" nicht der beste Weg ist, dies zu tun, ja, es kann getan werden, aber es ist fast genau so, als würde man ein Etikett verwenden (für das, was Sie wollen), jetzt funktionieren alle aufgelisteten Wege aber...

Für Sie und jeden anderen, der auf diese Frage stößt, ist dies der einfachste Weg, dies zu tun (was Sie in irgendeiner Weise fragen).

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

}

3
Oogle berries

Mit QPainter und QImage in einem Fenster-Widget malen (QMainWindow) (nur eine andere Methode)

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