QGraphicsItem probleme
Verfasst: 5. Oktober 2021 19:57
Hi liebe Community,
ich wusste nicht in welche Sektion mein Beitrag gehört, daher versuche ich es hier einmal.
Ich habe eine Custom QGraphicsItem Klasse.
Ich kann sie erzeugen und im view anzeigen lassen.
Ich versuche nun aber an die Rand Koordinaten meiner Ellipse zu kommen aber weiß nicht genau wie ich das anstellen soll.
Kann mir da bitte jemand ein paar Gedankenanstöße geben oder sogar die nötige Klassenmethode die das schon kann ?
Desweiten wollte ich mal wissen wie es möglich ist zwei Objekte nach dem Sie im GraphicsView angezeigt werden sozusagen im nachhinein zu connecten / mergen...
Also annahme ich habe zwei ellipsen im GraphicsView und will diese mit einer Linie verbinden. Wenn ich nun eine Ellipse auf eine andere Position bewefe ,sollen die Linien Fest an einem Ellipse Punkt angehängt bleiben und sich in Winkel und Länge ändern.
Ich bin für alle Tipps und Tricks offen..
Und gerne alle VerbesserungsVorschläge zu meinem jetztigen Code her
Viele Grüße
ich wusste nicht in welche Sektion mein Beitrag gehört, daher versuche ich es hier einmal.
Ich habe eine Custom QGraphicsItem Klasse.
Ich kann sie erzeugen und im view anzeigen lassen.
Code: Alles auswählen
myStates::myStates() {
effect = new QGraphicsOpacityEffect();
shadowEffect = new QGraphicsDropShadowEffect();
pressed = false;
this->setFlag(ItemIsMovable);
this->setFlag(ItemSendsScenePositionChanges);
changeStateDia = new changeStateDialog();
connect(changeStateDia, &changeStateDialog::changeStateData, this, &myStates::changeData);
}
myStates::myStates(QString n, QString c, QString out, QString d) {
this->name = n;
this->description = d;
this->codification = c;
this->output = out;
changeStateDia = new changeStateDialog();
connect(changeStateDia, &changeStateDialog::changeStateData, this, &myStates::changeData);
shadowEffect = new QGraphicsDropShadowEffect();
pressed = doubleClicked = false;
this->setFlag(ItemIsMovable);
this->setFlag(ItemSendsScenePositionChanges);
}
QRectF myStates::boundingRect() const
{
// int x = QCursor::pos().x();
// int y = QCursor::pos().y();
return QRectF(0, 0, 100, 100);
}
void myStates::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt, QWidget *widget)
{
QRectF rec = boundingRect();
QBrush brush(Qt::white);
if (pressed)
{
brush.setColor(Qt::lightGray);
}
painter->setPen(colorPen);
painter->setBrush(brush);
painter->drawEllipse(rec);
painter->drawText(rec, Qt::AlignVCenter|Qt::AlignHCenter, this->name);
this->setGraphicsEffect(shadowEffect);
}
void myStates::mousePressEvent(QGraphicsSceneMouseEvent *e)
{
if (e->button() == Qt::LeftButton)
{
pressed = true;
}
update();
QGraphicsItem::mousePressEvent(e);
}
void myStates::mouseReleaseEvent(QGraphicsSceneMouseEvent *e)
{
pressed = false;
update();
QGraphicsItem::mouseReleaseEvent(e);
}
Kann mir da bitte jemand ein paar Gedankenanstöße geben oder sogar die nötige Klassenmethode die das schon kann ?
Desweiten wollte ich mal wissen wie es möglich ist zwei Objekte nach dem Sie im GraphicsView angezeigt werden sozusagen im nachhinein zu connecten / mergen...
Also annahme ich habe zwei ellipsen im GraphicsView und will diese mit einer Linie verbinden. Wenn ich nun eine Ellipse auf eine andere Position bewefe ,sollen die Linien Fest an einem Ellipse Punkt angehängt bleiben und sich in Winkel und Länge ändern.
Ich bin für alle Tipps und Tricks offen..
Und gerne alle VerbesserungsVorschläge zu meinem jetztigen Code her
Viele Grüße