setPixmap zeichnet nicht in label

Alles rund um die Programmierung mit Qt
Antworten
Gulpinator
Beiträge: 4
Registriert: 23. März 2009 13:12

setPixmap zeichnet nicht in label

Beitrag 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!
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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...
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
Gulpinator
Beiträge: 4
Registriert: 23. März 2009 13:12

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag 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.
Gulpinator
Beiträge: 4
Registriert: 23. März 2009 13:12

Beitrag 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!
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag 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).
Gulpinator
Beiträge: 4
Registriert: 23. März 2009 13:12

Beitrag von Gulpinator »

sorry für die mangelnde formatierung und danke, läuft jetzt auf dem heap korrekt. sowas sind immer diese flüchtigkeitsfehler...
Antworten