PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Qt: QLabel + Image Problem



chapaev
28-02-2005, 17:17
Hi Leute,

Ich versuche grad eine Image Datei in einem QLabel (QImageLabel?) zu laden. Dabei benutze ich diese Code:

void Form1::init()
{
QImage image("./images/mouse.png");
image.create(16, 16, 32);
image.fill(qRgba(0, 0, 0, 0));
image.setAlphaBuffer(true);
pixmapLabel2->setPixmap( image );
}
Aber statt Image bekome ich nur ein Paar Pixel angezeigt. :( woran kann es liegen?

Boron
01-03-2005, 07:28
--> void QLabel::setPixmap ( const QPixmap & ) <--

Mit ist ein Rätsel, wie der Compiler bei dir ein QImage akzeptieren konnte.
Eigentlich will setPixmap() eine Referenz auf ein QPixmap und nicht auf ein QImage (sagt die API-Dokumentation zu QLabel).

BlueJay
01-03-2005, 08:48
Mit ist ein Rätsel, wie der Compiler bei dir ein QImage akzeptieren konnte. Eigentlich will setPixmap() eine Referenz auf ein QPixmap.

Der scheint's wohl nicht so genau zu nehmen :)
Deshalb sieht das Bild bestimmt so zerrupft aus.


QPixmap my_pix;
my_pix.convertFromImage(image);
dann das my_pix in das Label2 kleben dürfte das Bild zum Vorschein bringen
(nicht getestet)

so long,
BlueJay

chapaev
01-03-2005, 17:49
Vielen dank für die Antworten.

Ich habe das Problem gelöst, es war sogar noch einfacher als ich gedacht habe:

void Form1::init()
{
QImage image("./images/mouse.png");
pixmapLabel2->setPixmap( image );
}


Mir ist ein Rätsel, wie der Compiler bei dir ein QImage akzeptieren konnte.
Eigentlich will setPixmap() eine Referenz auf ein QPixmap und nicht auf ein QImage (sagt die API-Dokumentation zu QLabel).
Ich weis nciht wieso aber mit QImage geht es zimlich einfach ;)
Naja das könnte entwieder ein Bug sein (und zwar ein ziemlich gute :D), oder qlabel aczeptiert es so.


Der scheint's wohl nicht so genau zu nehmen
Deshalb sieht das Bild bestimmt so zerrupft aus.

QPixmap my_pix; my_pix.convertFromImage(image);
Was genau macht QPixmap? Wenn ich das richtig verstanden habe zeigt er Image an, die man mit QImage lädt?

MfG

chapaev

bmann
01-03-2005, 19:33
Hi
Ich schätze mal das QImage wird angenommen, da QPixmap einen constructor hat, der ein QImage nimmt und der compiler das erkennt.
Ein QPixmap/QImage stehen gleichberechtigt nebeneinander - QPixmap ist für das Zeichnen auf den Bildschirm optimiert, QImage dagegen für Image Manipulationen.

@chapaev:
Dein Problem verstehe ich nicht.
In deinem code lädst du zuerst die Datei ./images/mouse.png in ein QImage. Dann wirfst du dieses image weg und erstellst ein neues mit der Grösse 16x16 bei 32 bpp, füllst es schwarz und fügst einen alpha channel hinzu (den du aber nicht benutzt).
Dem code nach sollte dein label also jetzt ein 16 mal 16 Pixel grosses schwarzes Bild anzeigen. Aus deiner Fragestellung schliesse ich dass du aber eigentlich mouse.png haben willst? Oder wo ist das problem?
In diesem Fall reicht doch ein einfaches


QPixmap pix("./images/mouse.png");
pixmapLabel2->setPixmap(pix);


CU
Andi