Seite 1 von 1

setPixmap zeichnet nicht in label

Verfasst: 23. März 2009 14:04
von Gulpinator
hallo zusammen,

habe ein mainwindow mit designer erstelt und will nun ein bild in ein label ziehen. leider macht er das aber nicht. code in der hauptfenster.cpp ist:


QImage img("test.png");
QLabel murks;
murks.setPixmap(QPixmap::fromImage(img));
murks.show();

woran könnte es liegen?

vielen dank und viele grüße!

Verfasst: 23. März 2009 14:28
von AuE
Mach mal:

Code: Alles auswählen

QImage img;
bool bres = img.load("tst.png");
qDebug() << bres? "Image geladen":"Image konnte nicht geladen werden";
So kannst du checken ob dein Image geladen wurde. Evtl mal die Ressourcen in der Doku ansehen. Tippe da mal drauf. Ansonsten kannste mi kompletten Pfad probieren. Falls es daran nicht liegt...stöer mal im Forum ;-) Hätte fast Plugins geschrieben allerdings ist es ja ein png...

Verfasst: 23. März 2009 14:34
von franzf
Dein QLabel läuft aus dem Scope... Das Objekt ist einfach nach der Methode nicht mehr vorhanden!
Entweder dynmisch erstellen (mit new), oder das Label direkt im designer an die Stelle im Layout legen.

Verfasst: 23. März 2009 14:58
von Gulpinator
habe jetzt im designer ein label murks erstellt und den code ansonsten unverändert gelassen (die deklaration natürlich entfernt), ergebnis:

Fehler: Abfrage des Elementes »show« in »((Taschenrechner*)this)->Taschenrechner::<anonymous>.Ui::MainWindow::<anonymous>.Ui_MainWindow::murks«, das vom Nicht-Klassentyp »QLabel*« ist
make: *** [Hauptfenster.o] Fehler 1

Verfasst: 23. März 2009 15:07
von franzf
Das schaut ziemlich - komisch - aus.
Zeig bitte mehr Code.
Wichtig sind die Header, in denen du Tachenrechner bzw Hauptfenster definierst. Außerdem die Implementierung des Konstruktors und die ganze Methode, in der du das Pixmap setzen willst.

Am allerbesten wäre es, wenn du dein Projekt mit allen Dateien in ein ZIP packst und hier anhängst, dann muss man am wenigsten raten.

Verfasst: 23. März 2009 15:12
von pfid
Du hast jetzt einen QLabel Pointer, dementsprechend musst du im Code oben statt

Code: Alles auswählen

murks.funktion()
eben

Code: Alles auswählen

murks->funktion()
schreiben.

Verfasst: 23. März 2009 15:31
von Gulpinator
pfid du hast mir den tag gerettet. das hatte ich vor lauter kopf übersehen, so ein unsinn. so klappt es natürlich. danke an alle!

habe aber gleich das nächste problemchen!

void Taschenrechner::icaodienst() {
QImage img("icao-ausschnitt.bmp");
gurks->setPixmap(QPixmap::fromImage(img));
gurks->show();

}


void Taschenrechner::karte_zeigen() {

QProcess process;
process.start("./icaocut map.bmp icao-ausschnitt.bmp");
QTimer::singleShot(5500, this, SLOT(icaodienst()));

}

zieht

QProcess: Destroyed while process is still running.
QPixmap::fromImage: Cannot convert a null image

nach sich. eine idee was los ist? danke im voraus!

Verfasst: 23. März 2009 15:36
von pfid
Gulpinator hat geschrieben:pfid du hast mir den tag gerettet. das hatte ich vor lauter kopf übersehen, so ein unsinn. so klappt es natürlich. danke an alle!

habe aber gleich das nächste problemchen!

void Taschenrechner::icaodienst() {
QImage img("icao-ausschnitt.bmp");
gurks->setPixmap(QPixmap::fromImage(img));
gurks->show();

}


void Taschenrechner::karte_zeigen() {

QProcess process;
process.start("./icaocut map.bmp icao-ausschnitt.bmp");
QTimer::singleShot(5500, this, SLOT(icaodienst()));

}

zieht

QProcess: Destroyed while process is still running.
QPixmap::fromImage: Cannot convert a null image

nach sich. eine idee was los ist? danke im voraus!
Punkt 1: verwende endlich code tags!
Punkt 2: wie lange Objekte, die du in einer Methode auf dem Stack erzeugst, leben, wurde dir oben schon erklärt.

Kurz: Der QProcess wird beim beenden der Methode zerstört (was dir übrigens auch die Fehlermeldung sagt).

Verfasst: 23. März 2009 15:48
von Gulpinator
sorry für die mangelnde formatierung und danke, läuft jetzt auf dem heap korrekt. sowas sind immer diese flüchtigkeitsfehler...