Seite 1 von 1

Wie painte ich ein QImage in ein QGraphicsView?

Verfasst: 14. August 2009 13:05
von theprogrammer12
Hier mein Code:

Code: Alles auswählen

QGraphicsScene *scene = new QGraphicsScene();
scene->setBackgroundBrush(QColor(0, 0, 0));
ViewBox->setScene(scene);
Wie kann ich da jetzt ein QImage einfügen??

Verfasst: 14. August 2009 13:20
von franzf
Was hast du bisher versucht?
Schon mal die Doku gelesen?

//edit:
Und muss es denn wirklich ein QImage sein? Hast du dir die Doku dazu schon mal durchgelesen?
Qt provides four classes for handling image data: QImage, QPixmap, QBitmap and QPicture. QImage is designed and optimized for I/O, and for direct pixel access and manipulation, while QPixmap is designed and optimized for showing images on screen. QBitmap is only a convenience class that inherits QPixmap, ensuring a depth of 1. Finally, the QPicture class is a paint device that records and replays QPainter commands

Verfasst: 14. August 2009 15:11
von theprogrammer12
Also ich habs schon mal so probiert:

Code: Alles auswählen

scene->setForegroundBrush(QImage(".\bla.png"));
bzw. so:

Code: Alles auswählen

scene->setForegroundBrush(QBrush(QImage(".\bla.png")));
Ich habs auch schon mal mit QPixmap versucht, was auch nicht funktioniert hat:

Code: Alles auswählen

scene->addPixmap(QPixmap(".\bla.png"));

Verfasst: 14. August 2009 15:19
von franzf
Das hier klappt wunderbar:

Code: Alles auswählen

#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QPixmap>

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QGraphicsView view;
    QGraphicsScene scene;
    view.setScene(&scene);
    scene.addPixmap(QPixmap("./test.png"));
    view.show();
    return app.exec();
}
Wenn etwas nicht klappt, sollte man genau sagen was nicht geht, und evtl Fehlermeldungen posten.

Verfasst: 14. August 2009 16:04
von theprogrammer12
Danke!
Jetzt hab ich nur das Problem, dass ich das Bild zwingend als QImage habe.
Ich will nämlich einen Webcam-Server mit OpenCV programmieren (American Pie hehe) und die Funktion, die das IplImage in ein Qt-Format convertet, als rückgabewert ein QImage hat. Gibt es da irgendeine Möglichkeit das umzukonvertieren?

Verfasst: 14. August 2009 16:07
von theprogrammer12
Ah ok! Ich hab die Funktion gefunden:
scene->addPixmap(QPixmap().fromImage(QImage("./bla.png")));
Danke für die Hilfe!

Verfasst: 14. August 2009 17:02
von franzf
theprogrammer12 hat geschrieben:Ah ok! Ich hab die Funktion gefunden:
scene->addPixmap(QPixmap().fromImage(QImage("./bla.png")));
Funktion gefunden, aber Anwendung falsch ;) fromImage() ist eine statische Funktion, welche man üblicherweise ohne Instanz aufruft:

Code: Alles auswählen

QPixmap pix = QPixmap::fromImage( image );

Verfasst: 15. August 2009 16:27
von theprogrammer12
Oh! Danke!