QLabel mit setPixmap ein Bild ausgeben

Alles rund um die Programmierung mit Qt
Antworten
JoseMan
Beiträge: 121
Registriert: 4. März 2009 18:09

QLabel mit setPixmap ein Bild ausgeben

Beitrag von JoseMan »

Hi,

wieder mal ein Problem.
ich möchte ein selbst "berechnetes" Bild in einem QMainwindow ausgeben!
Hier mal bisher der Code:

Code: Alles auswählen

Grafik_Ausgabe::Grafik_Ausgabe(QWidget *parent, Qt::WFlags flags)
	: QMainWindow(parent, flags)
{
	ui.setupUi(this);

	generateBild();

	ui.label->setPixmap(*mPixmap);
}
Ich denke es erklärt sich alles selber. Ui ist die Ui-Klasse.
Ich will ein <QLabel> verwenden und dort eine <QPixmap> einhängen.

Hier die "generateBild()" Methode

Code: Alles auswählen

void Grafik_Ausgabe::generateBild()
{
	const int height(256),width(256);
	char* bildArray = new char[height*width*4];
	srand( (unsigned)time( NULL ) );
	unsigned char red(0),green(0),blue(0),alpha(200);
	unsigned int arrayIndex(0);
	for(unsigned int hh(0); hh<height; ++hh)
	{
		for(unsigned int ww(0); ww<width; ++ww)
		{
			red = static_cast<unsigned char>(rand()%256);
			green = static_cast<unsigned char>(rand()%256);
			blue = static_cast<unsigned char>(rand()%256);
			alpha = 0;

			bildArray[arrayIndex] = red;
			++arrayIndex;
			bildArray[arrayIndex] = green;
			++arrayIndex;
			bildArray[arrayIndex] = blue;
			++arrayIndex;
			bildArray[arrayIndex] = alpha;
			++arrayIndex;
		}
	}
	QByteArray byteArray(bildArray,256*256*4);

        mPixmap = new QPixmap();
	mPixmap->loadFromData(byteArray);
}
Jedoch was ich da sehe ist NIX/NULL!! :(

Was mache ich falsch? Hat jemand mal soetwas ähnlich gemacht?
vielen dank schon mal jetzt.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Nur die Pixeldaten? woher sll Qt wissen wie es da zu interpretieren hat? Länge, Breite, usw.?
Sucht du ggf. QImage bzw. QImage::setPixel()
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
JoseMan
Beiträge: 121
Registriert: 4. März 2009 18:09

Beitrag von JoseMan »

Aha,

nagut, auch wenn ich die Breite und Höhe angebe

Code: Alles auswählen

mPixmap = new QPixmap(width,height);
dann wird zwar ein Rechteck in dem Label gezeichnet, aber es bleibt irgendwie leer. Also es hat einen grau-blauen Hintergrund der immer gleich bleibt, egal wie beine Pixeldaten sind. Was muss ich da noch angeben?

Mfg Jo
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Lesen wäre angebracht... QImage:.setPixel() oder einen QImage ctor deiner Wahl... :roll:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
JoseMan
Beiträge: 121
Registriert: 4. März 2009 18:09

Beitrag von JoseMan »

Okay, ich kann jetzt leider nicht an dieser Problematik weiterarbeiten.
Aber das Problem ist, es soll schön performant sein, deswegen erst in einem Array.
Aber Danke trotzdem, ich werde mich mal damit beschäftigen!
Antworten