Seite 1 von 1

QLabel mit setPixmap ein Bild ausgeben

Verfasst: 12. Juni 2009 14:42
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.

Verfasst: 12. Juni 2009 16:42
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()

Verfasst: 12. Juni 2009 20:51
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

Verfasst: 12. Juni 2009 21:05
von Christian81
Lesen wäre angebracht... QImage:.setPixel() oder einen QImage ctor deiner Wahl... :roll:

Verfasst: 12. Juni 2009 21:17
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!