Witam,
Czytam od jakiegoś czasu na temat Graphics View z frameworku Qt. Postanowiłem napisać aplikację korzystającą z biblioteki krzywych utworzonej na rzecz mojego wcześniejszego projektu. Dręczy mnie pewien problem natury, zdaje się, projektowania obiektowego.
Rzecz w uproszczeniu polega na tym: posiadam (w bibliotece) klasę Bezier, która zajmuje się obliczeniami związanymi z krzywą Beziera. Klasa ta posiada pole control_points, na podstawie którego obliczany jest kształt krzywej
class Bezier
{
// [...]
private:
vector<QPointF> control_points;
// [...]
};
Chcę stworzyć klasę, która będzie reprezentować graficznie krzywą Beziera -- klasę BezierItem, dziedziczącą po QGraphicsItem. Klasa będzie wyświetlać krzywą oraz uchwyty (kółka), służące do zmiany położenia punktów kontrolnych.
Stworzyłem strukturę podobną do poniższej:
class BezierItem : public QGraphicsItem
{
// [...]
private:
Bezier<QPointF> m_bezier;
QVector<HandleItem> m_handles;
// [...]
};
Jednak nie wiem w jaki sposób powinienem zorganizować komunikację pomiędzy obiektami HandleItem, a obiektem krzywej, tak aby poruszenie punktem kontrolnym powodowało zmianę odpowiedniego punktu w m_bezier.
Czy możecie mi pomóc?
PS Klasa Bezier jest szablonowana klasą punktu oraz napisana wyłącznie przy użyciu STL.