Seite 1 von 2

PNG-Datei in QWidget anzeigen

Verfasst: 21. September 2009 12:13
von reinki0013
Hallo zusammen!

also ich möchte in meinem QWidget gerne ein *.png-Datei einbinden...
Ich hab jetzt auch schon alles durchgeschaut, aber ich finde nichts...

Ich hätts so probiert, funktioniert aber nicht:

Code: Alles auswählen

QImage img("Test.png");
ui.label->setPixmap(QPixmap::fromImage(img));
aber das geht nicht, weiß echt net wie das funzt...

wäre toll wenn ihr mir weiterhelfen könnt...

danke

lg

Verfasst: 21. September 2009 12:17
von upsala
Und das Bild existiert in dem Pfad, in dem du suchst? Warum wandelst du eigentlich von QImage nach QPixmap und läst das QPixmap nicht direkt laden?

Verfasst: 21. September 2009 12:22
von reinki0013
upsala hat geschrieben:Und das Bild existiert in dem Pfad, in dem du suchst? Warum wandelst du eigentlich von QImage nach QPixmap und läst das QPixmap nicht direkt laden?
ja also ich habs auch schon mit einem anderen pfad probiert, also die direkte pfad angabe...

wenn ich das so probiere

Code: Alles auswählen

  
QPixmap pix("System.png");
ui.label->setPixmap(pix);
gehts auch net...

ich versteh das überhaupt net, wie kann ich das bloß im widget anzeigen lassen?

Verfasst: 21. September 2009 12:44
von AuE

Code: Alles auswählen

QPixmap pix;
if (pix.load("pixmap.png")
label->setPixmapmap(pix);
else
qDebug() << "How to load smth. that isn't there?"

Verfasst: 21. September 2009 13:11
von reinki0013
AuE hat geschrieben:

Code: Alles auswählen

QPixmap pix;
if (pix.load("pixmap.png")
label->setPixmapmap(pix);
else
qDebug() << "How to load smth. that isn't there?"
also wenn ich das so mache, dann steht "TextLabel" im Label drinnen und das Bild (.png) wird trotzdem nicht angezeigt...

ich bekomme nämlich bei "load" false zurück...

was könnte da das problem sein?

lg

Verfasst: 21. September 2009 13:28
von Christian81
Am genau den gleichen Problem wie hier: http://qtforum.de/forum/viewtopic.php?t=9960

Verfasst: 21. September 2009 13:51
von reinki0013
Christian81 hat geschrieben:Am genau den gleichen Problem wie hier: http://qtforum.de/forum/viewtopic.php?t=9960
ja das hab ich jetzt gemacht...
es is trotzdem so, dass diese datei nicht geladen wird, also "false" zurückkommt...

ich versteh das einfach überhaupt nimma...
habs jetzt zur sicherheit auch mal in den "debug"-ordner vom projekt kopiert, ändert aber auch nichts...

egal ob "Test.png" oder "D:\Projektmappe\Test.png", es kann nicht geladen werden, aber warum?

Verfasst: 21. September 2009 13:53
von Christian81
D:\Projektmappe\Test.png ? Das hoffe ich doch wohl nicht...
Und wenn man QCoreApplication::applicationDirPath() benutzt funktioniert es auch.

Verfasst: 21. September 2009 14:02
von Mani99
Ich würde das ganze so machen:

Code: Alles auswählen

QString img_path = QString(QCoreApplication::applicationDirPath());
img_path.append(QDir::separator());
img_path.append("Test.png");
applicationDirPath liefert dir warscheinlich schon den pfad komplett zurück, aber wenn du noch in unterverzeichnisse willst, solltest du QDir::separator() verwenden, der gibt dir den nativen separator des betriebssystems zurück!

Verfasst: 21. September 2009 14:05
von reinki0013
Christian81 hat geschrieben:D:\Projektmappe\Test.png ? Das hoffe ich doch wohl nicht...
Und wenn man QCoreApplication::applicationDirPath() benutzt funktioniert es auch.
ich kann dir aber sagen, dass es vollkommen egal ist welchen pfad ich nehme...

hab als beispiel mal "C:\Test.png" genommen, also einfach die Datei dort hinkopiert und er kann sie trotzdem nicht öffnen... ?

Verfasst: 21. September 2009 14:08
von Christian81
Ok nochmal - wenn Du wirklich C:\Test.png genommen hast würde der Thread in C++-Grundlagen wesentlich besser passen...

Verfasst: 21. September 2009 14:26
von reinki0013
Christian81 hat geschrieben:Ok nochmal - wenn Du wirklich C:\Test.png genommen hast würde der Thread in C++-Grundlagen wesentlich besser passen...
natürlich habe ich

Code: Alles auswählen

pix.load("C:\\Test.png");
geschrieben.

Mein Programm läuft unter Windows, es hat auch nicht mit

Code: Alles auswählen

pix.load("C:/Test.png");
funktioniert.

Verfasst: 21. September 2009 14:42
von Christian81
Und was sagt QImageReader::supportedImageFormats() ?

Verfasst: 21. September 2009 14:50
von reinki0013
Christian81 hat geschrieben:Und was sagt QImageReader::supportedImageFormats() ?

Code: Alles auswählen

list	[15]
(
{"bmp" size=3},{"gif" size=3},{"ico" size=3},{"jpeg" size=4},{"jpg" size=3},{"mng" size=3},{"pbm" size=3},{"pgm" size=3},{"png" size=3},{"ppm" size=3}, ...)	QList<QByteArray>
+		[0]	{"bmp" size=3}	QByteArray
+		[1]	{"gif" size=3}	QByteArray
+		[2]	{"ico" size=3}	QByteArray
+		[3]	{"jpeg" size=4}	QByteArray
+		[4]	{"jpg" size=3}	QByteArray
+		[5]	{"mng" size=3}	QByteArray
+		[6]	{"pbm" size=3}	QByteArray
+		[7]	{"pgm" size=3}	QByteArray
+		[8]	{"png" size=3}	QByteArray
+		[9]	{"ppm" size=3}	QByteArray
+		[10]	{"svg" size=3}	QByteArray
+		[11]	{"tif" size=3}	QByteArray
+		[12]	{"tiff" size=4}	QByteArray
+		[13]	{"xbm" size=3}	QByteArray
+		[14]	{"xpm" size=3}	QByteArray

Verfasst: 21. September 2009 14:56
von Christian81
png ist dabei. Wenn C:/Test.png wirklich existiert dann ist es wohl kaputt. Was anderes kann ich mir nicht mehr vorstellen.