QGraphicsItem Cosmetic QPen während paint()
Verfasst: 16. Mai 2013 10:54
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);
}
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);
}