die paint-funktion eines graphicItems soll ein rechteck mit fester (fixRect)und eins mit variabler(varRect) breite zeichnen. dazu wird die breite von fixRect durch den streckfaktor in x-richtung geteilt. das problem ist nun aber, dass das boundingRect nicht korrekt berechnet wird (sollte sich ja je nach zoom-faktor des views unterscheiden) und die hover-effekte nicht korrekt sind. so tauchen grafikfehler auf...
ist das irgendwie möglich in der boundingRect-funktion die breite richtig zu berechnen oder gibt es eine bessere möglichkeit, wenn die beiden rechtecke (aus performance-gründen) in einem graphicItem bleiben sollen?
Code: Alles auswählen
class Rect : public QGraphicsItem
{
public:
Rect(height, width);
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget);
}Code: Alles auswählen
void Rect::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
float xScale = option->matrix.m11();
float fixRectWidth = width/xScale;
float varRectWidth = width;
QRectF fixRect = QRectF (- fixRectWidth, 0, fixRectWidth, height);
QRectF varRect = QRectF (0 , 0, varRectWidth, height);
}Code: Alles auswählen
QRectF Rect::boundingRect() const
{
return QRectF(-fixRectWidth, 0, fixRectWidth + varRectWidth, height);
}
danke schonmal