QGraphicsItem probleme

Dein Thema passt einfach in kein Forum? Dann probiers mal hier.
Antworten
stud99
Beiträge: 1
Registriert: 28. September 2021 07:09

QGraphicsItem probleme

Beitrag von stud99 »

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.

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);
}
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
Antworten