Seite 1 von 1
QGraphicsTextItem skalieren
Verfasst: 13. August 2007 14:10
von NPhard
Hallo zusammen,
ich habe ein QGraphicsTextItem in dem beliebiges html steht. Nun möchte ich in der Lage sein diese Item zu skalieren, ohne den Text zu verändern. Mit scale(...) geht das ja im Prinzip, allerdings habe ich da das Problem dass das boundingRect() nicht geupdatet wird.
Kann mir jemand helfen?
Gruss,
NPhard
Re: QGraphicsTextItem skalieren
Verfasst: 17. August 2007 01:41
von patrik08
NPhard hat geschrieben:Hallo zusammen,
ich habe ein QGraphicsTextItem in dem beliebiges html steht. Nun möchte ich in der Lage sein diese Item zu skalieren, ohne den Text zu verändern. Mit scale(...) geht das ja im Prinzip, allerdings habe ich da das Problem dass das boundingRect() nicht geupdatet wird.
NPhard
Das wuerde mich auch interessieren wie dass geht... rotieren und verschieben geht ja prima und eine feste width x height um diese werte
wi x hi zu vergroessern oder verkleiner ... denke ich dass man mit dem
keyPressEvent dahinter kommt zum beispiel CTRL + maus x,y und am border die neue hi x wi aurechnet...
Mit dem sperren habe ich auch muehe ... ich mochte so wie scribus die elemente sperren koennen so das man mit der maus nichts kaput machen kann was einmal richtig positioniert ist....
die feste breite und hoehe geht ja prima ueber den fixed text hinaus...
Code: Alles auswählen
QRectF FloatTXTDiagram::boundingRect() const
{
QRectF now = QGraphicsTextItem::boundingRect(); /* actual setting */
return QGraphicsTextItem::boundingRect().adjusted(0,0, wi - now.width() , hi - now.height() );
}
verschieben mit doppelclick....
void FloatDiagram::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
{
if (LOCKSTATUSGRID) {
return;
}
std::cout << "mouseDoubleClickEvent" << std::endl;
if ( modus == MODUS_MOVE ) {
std::cout << "mouseDoubleClickEvent entra in move " << std::endl;
setTextInteractionFlags(Qt::TextEditorInteraction);
QGraphicsSceneMouseEvent *mouseEvent = new QGraphicsSceneMouseEvent(QEvent::GraphicsSceneMousePress);
mouseEvent->setAccepted(true);
mouseEvent->setPos(event->pos());
mouseEvent->setScenePos(event->scenePos());
mouseEvent->setScreenPos(event->screenPos());
mouseEvent->setButtonDownPos(Qt::LeftButton,event->buttonDownPos(Qt::LeftButton));
mouseEvent->setButtonDownScreenPos(Qt::LeftButton,event->buttonDownScreenPos(Qt::LeftButton));
mouseEvent->setButtonDownScenePos(Qt::LeftButton,event->buttonDownScenePos(Qt::LeftButton));
mouseEvent->setWidget(event->widget());
QGraphicsTextItem::mousePressEvent(mouseEvent);
delete mouseEvent;
}
emit ActiveNow(IDSET); /* dinamic cast sender ! qtextdocument */
}
void FloatDiagram::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if (LOCKSTATUSGRID) {
return;
}
std::cout << "mouseMoveEvent" << std::endl;
/* edit modus or move floating text? */
if (textInteractionFlags() & Qt::TextEditable) {
QGraphicsTextItem::mouseMoveEvent(event);
} else {
QGraphicsItem::mouseMoveEvent(event);
}
//////////modus = MODUS_MOVE;
emit ActiveNow(IDSET); /* dinamic cast sender ! qtextdocument */
}
Andere wege gibt es sicher in
http://labs.trolltech.com/blogs/categor ... hics_view/ mit button und so..
http://labs.trolltech.com/blogs/2007/03 ... he-canvas/