Alles rund um die Programmierung mit Qt
acdc
Beiträge: 82 Registriert: 23. Oktober 2007 18:56
Beitrag
von acdc » 8. April 2010 21:53
Hallo,
ich habe ein QWidget mit fixer größe und möchte nun ein Bild in diesem Widget anzeigen.
Code: Alles auswählen
setFixedSize(200,200);
QVBoxLayout *layout=new QVBoxLayout(this);
setLayout(layout);
imageLabel=new QLabel(this);
imageLabel->setBackgroundRole(QPalette::Base);
imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
imageLabel->setScaledContents(true);
layout->addWidget(imageLabel);
QImage image(pfad);
imageLabel->setPixmap(QPixmap::fromImage(image));
Dies funktioniert unter Windows xp. Jedoch benötige ich diese Funktion unter Windows ME und da wird das Bild nicht angezeigt. Ich benutzte die Version Qt4.5.
Muss ich da ein repaint oder so einfügen?
danke acdc[/quote][/code]
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 9. April 2010 06:28
Stimmt der Pfad, wird das Bild überhaupt geladen?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
RavenIV
Beiträge: 267 Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut
Beitrag
von RavenIV » 9. April 2010 08:55
Ist das Bild vielleicht ein jpg?
Dann könnte sein, dass das plugin (qjpeg4.dll) fehlt.
Linux, das längste Text-Adventure aller Zeiten
acdc
Beiträge: 82 Registriert: 23. Oktober 2007 18:56
Beitrag
von acdc » 10. April 2010 14:13
Christian81 hat geschrieben: Stimmt der Pfad, wird das Bild überhaupt geladen?
Code: Alles auswählen
path="c:/test.jpg";
qDebug()<<path;
QImage image(path);
if(image.isNull())
return;
leider ist image.isNull() immer true. Das Bild ist vorhanden und der Pfad stimmt. Die dll ist vorhanden!
öffne ich hingegen ein bmp auf die selbe Weise, so wird das Bild angezeigt...
acdc
softwaremaker
Beiträge: 149 Registriert: 1. April 2009 19:25
Beitrag
von softwaremaker » 10. April 2010 16:17
Qt benötigt das JPEG-Plugin um ein JPEG laden zu können und du musst es mitliefern.
Lege im Pfad deiner fertigen EXE ein Unterverzeichnis "plugins" an und darin wieder ein Unterverzeichnis "imageformats". Dort hinein packst du die Datei "qjpeg4.dll" aus C:\Qt\2009.03\qt\plugins\imageformats.
Update:
zusätzlich muss der plugin-Pfad bekannt gemacht werden:
In der main.cpp nach QApplication a(argc, argv); füge hinzu:
qApp->addLibraryPath( qApp->applicationDirPath() + "/plugins" );
Zuletzt geändert von
softwaremaker am 10. April 2010 19:52, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 10. April 2010 19:10
softwaremaker hat geschrieben: Lege im Pfad deiner fertigen EXE ein Unterverzeichnis "plugins" an und darin wieder ein Unterverzeichnis "imageformats"
Falsch - das plugins-Directory ist nicht nötig bzw. so geht es nicht - sieh Doku.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
softwaremaker
Beiträge: 149 Registriert: 1. April 2009 19:25
Beitrag
von softwaremaker » 10. April 2010 19:50
@Christian81: hast recht, ich habe vergessen was mit anzugeben
in main.cpp nach QApplication a(argc, argv); füge hinzu:
qApp->addLibraryPath( qApp->applicationDirPath() + "/plugins" );
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 10. April 2010 23:23
Oder wie gesagt - plugins weglassen und nichts in der main.cpp angeben.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
acdc
Beiträge: 82 Registriert: 23. Oktober 2007 18:56
Beitrag
von acdc » 11. April 2010 09:10
Danke für eure Hilfe!
Habe das Problem nun gefunden:
Hatte zuerst die dlll`s aus dem Ordner
C:\qt\2009.03\bin\imageformats
benutzt und die funktionierten nicht, da man hier eine neue Version von Windows benötigt.
Plugins aus diesem Ordner sind für Win Me zu gebrauchen!
C:\qt\2009.03\qt\plugins\imageformats
danke
acdc