Seite 1 von 1

QGraphicsItem Cosmetic QPen während paint()

Verfasst: 16. Mai 2013 10:54
von delegug
Guten Tag,

ich habe ein eigenes von QGraphicsItem abgeleitetes Element, das ein Polygon mit dem painter in paint() zeichnet (nur die äußere Linie).
Jetzt ist mein Problem, das nach dem Einbinden in den View, das Polygon skaliert wird und dadurch die Linie sehr dick wird. Dies möchte ich verhindern und immer mit der gleichen Liniengröße arbeiten.
Wenn ich einen QPen mit cosmetic=true in der Funktion paint() erzeuge, funktioniert es nicht. Wie kann ich die Liniendicke beeinflussen bzw. immer gleich lassen?


void formLineItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget*)
{
Q_UNUSED(option);
painter->setRenderHints(QPainter::Antialiasing);
QBrush brush;
brush.setColor(Qt::blue);
QPen pen;
pen.setColor(Qt::blue);
pen.setWidth(1);
pen.setCosmetic(true);
//Liniestärke immer gleich groß, egal welche Zoomstärke->GEHT NICHT
painter->drawPolyline(polyData);
}

Re: QGraphicsItem Cosmetic QPen während paint()

Verfasst: 17. Mai 2013 08:17
von Uwe

Code: Alles auswählen

painter->setPen( pen );
painter->drawPolyline(polyData);
Uwe

Re: QGraphicsItem Cosmetic QPen während paint()

Verfasst: 17. Mai 2013 09:05
von delegug
Sorry,
hab den Beispielcode selbst kurz hier reingeschrieben und deshalb das painter->setPen(pen) vergessen.
Es ist trotzdem dann nicht "cosmetic" und die Linienstärke ändert sich bei der Skalierung...
Trotzdem schonmal danke...