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