[Gelöst] QGraphicsTextItem größe ändern und verschieben

Alles rund um die Programmierung mit Qt
Antworten
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

[Gelöst] QGraphicsTextItem größe ändern und verschieben

Beitrag von Mani99 »

Hi,

ich hab folgendes problem, ich habe von QGraphicsTextItem abgeleitet und die mousemove methode überschrieben.

Darin soll es möglich sein, falls die maus auf dem QGraphicsTextItem auf einem bestimmten bereich, nämlich den randbereich kommt, das QGraphicsTextItem in der breite mittels setTextWidth() zu verändern.

Außerdem soll das QGraphicsTextItem auch noch in der QGraphicsScene verschiebbar sein, was ja problemlos mittels setFlag(QGraphicsItem::ItemIsMovable, true) möglich ist.

Das flag ItemIsMovable wird im konstruktor der klasse auf true gestzt.

Was ich möchte ist:
  • wenn nicht der randbereich angeklickt wird, soll das QGraphicsTextItem ganz normal verschoben werden können
    wenn der randbereich angeklickt wird, soll nur die größe verändert werden können
Momentan passiert immer irgendwas, also entweder es wird verschoben oder die größe wird verändert. Ich hätte aber gerne jeweils eine konstante verhaltensweise.

Bitte um hilfe, wie ich das lösen könnte, danke!

Code: Alles auswählen

//Abgeleitete klasse von QGraphicsTextItem
void Test_GraphicsTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
    qreal rborder = boundingRect().x()+boundingRect().width();

    if(event->pos().rx() == (rborder-5))
    {
        setFlag(QGraphicsItem::ItemIsMovable, false);

        setTextWidth(event->scenePos().rx()-scenePos().rx());
    }
    else
        setFlag(QGraphicsItem::ItemIsMovable, true);

    QGraphicsTextItem::mouseMoveEvent(event);
}
Zuletzt geändert von Mani99 am 13. September 2010 09:32, insgesamt 1-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Schreib dir ein eigenes Item, das das resizen übernimmt. Das nimmst du als parent für dein eigentliches Item. Das ist dann eine allgemeine Lösung, die du auf alle QGraphicsItems anwenden kannst.
Such mal hier nach "QGraphicsItem resize" o.Ä., das gabs schon öfter, sogar teilweise mit kompletter Lösung :)
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Danke für den hinweis, die lösung habe ich hier gefunden!
Antworten