Seite 1 von 1
[gelöst] Problem mit Pixamp und Painter
Verfasst: 2. Februar 2006 11:08
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
3) Ich male ein Rechteck mittels
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....
Re: Problem mit Pixamp und Painter
Verfasst: 2. Februar 2006 14:39
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...
Verfasst: 3. Februar 2006 09:13
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
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!
Verfasst: 6. Februar 2006 08:52
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
Verfasst: 6. Februar 2006 09:42
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

Verfasst: 7. Februar 2006 15:25
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...