[gelöst] Problem mit Pixamp und Painter

Alles rund um die Programmierung mit Qt
Antworten
sascha
Beiträge: 37
Registriert: 12. Januar 2006 11:01

[gelöst] Problem mit Pixamp und Painter

Beitrag von sascha »

Hallo!
Ich versuche hier gerade auf ein Pixmap, welches als Pixmap eines Labels gesetzt ist, zu malen....
Ich habe schon alle Ansätze, die man hier im Forum finden konnte, versucht, aber es kommt einfach nichts :-(

Mein Vorgehen ist folgendes:

1) Ich reimplementiere die paintEvent Methode.
2) Darin erstelle ich mir einen Painter mittels

Code: Alles auswählen

QPainter painter(ui.pictureLabel)
3) Ich male ein Rechteck mittels

Code: Alles auswählen

painter.drawRect(rec)
wobei rec ein QRect ist.

Leider wird nichts angezeigt :-(
Jat einer eine Idee, wie ich über das Pixmap des Labels zeichnen kann?

Ach ja, das habe ich ganz vergessen... Mein Label ist in einem ScrollView, falls das einen Unterschied macht....
Zuletzt geändert von sascha am 7. Februar 2006 15:26, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: Problem mit Pixamp und Painter

Beitrag von macman »

sascha hat geschrieben:Ach ja, das habe ich ganz vergessen
Du hast auch vergessen mehr Code zu liefern. Z.B. das komplette PaintEvent oder zumindest soweit gekürzt, das was gemalt werden müsste. So kann man nicht viel sagen, vielleicht ist das Rechteck zu klein oder groß, vielleicht der Stift zu dünn oder er malt in der Hintergrundfarbe...
sascha
Beiträge: 37
Registriert: 12. Januar 2006 11:01

Beitrag von sascha »

Ok, dann kommt hier mehr Code!!!

Das Paint Event sieht wie folgt aus:

Code: Alles auswählen

void DataGatheringTool::paintEvent(QPaintEvent *event)
{
	QRect rec(0, 0, 100, 100);
	QPainter painter(ui.pictureLabel);
	painter.setPen(Qt::red);
	painter.drawRect(rec);
}
Dabei ist ui.pictureLabel ein QLabel und wurde durch den Designer auf das MainWindow (DataGatherinTool.ui) gesetzt.
In der Klassen DataGatheringTool.cpp wird dann eine Scroll Area hinzugefügt (da das mit dem Deisgner ja nicht machbar ist, oder?!):

Code: Alles auswählen

DataGatheringTool::DataGatheringTool(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
	ui.setupUi(this);
	ui.pictureLabel->setBackgroundRole(QPalette::Base);
	ui.pictureLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);

	scrollArea = new QScrollArea;
	scrollArea->setBackgroundRole(QPalette::Dark);
	scrollArea->setWidget(ui.pictureLabel);
	scrollArea->setWidgetResizable(true);
	ui.hboxLayout->addWidget(scrollArea);
}
So das sollten alle Stelen sein, die Interessant sind....
Ach ja noch eins, wenn ich in der PaintEvent Methode

Code: Alles auswählen

	QPainter painter(ui.pictureLabel);
setze, dann wird in das Hauptfenster gezeichnet... Also grundsätzlich scheint es zu funktionieren....

Wenn Ihr also weiter wisst... Ich bin dankbar für jeden Hinweis!
stippy
Beiträge: 80
Registriert: 29. Juli 2005 09:38
Wohnort: Mönchengladbach

Beitrag von stippy »

Hi sascha,

ich hab Deinen Code nur kurz überflogen, denke aber das wird Dir helfen:

ich denke die Positionierung pastt nicht! Du Zeichnest immer hier hin (0, 0, 100, 100).

Probiers mal mit:
((int)x()+0, (int)y()+0, 100, 100)

Gruss, Dirk
sascha
Beiträge: 37
Registriert: 12. Januar 2006 11:01

Beitrag von sascha »

stippy hat geschrieben: Probiers mal mit:
((int)x()+0, (int)y()+0, 100, 100)

Gruss, Dirk

Das hat leider auch nicht geholfen!
Es ist immer noh das Problem, dass ich das Rechteck sehen, wenn ich es auf "this" male, aber nicht sehe, wenn ich irgendeinanderes Widget als Parent angebe :-(
sascha
Beiträge: 37
Registriert: 12. Januar 2006 11:01

Beitrag von sascha »

Hallo!

Also ich habe das Problem jetzt gelöst, indem ich ein eigenes Widget erstellt habe. In diesem habe ich dann die paintEvent Methode überschrieben und nun geht es...
Antworten