QGraphicsTextItem skalieren

Verschiedenes zu Qt
Antworten
NPhard
Beiträge: 10
Registriert: 25. Juni 2007 12:28

QGraphicsTextItem skalieren

Beitrag 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
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Re: QGraphicsTextItem skalieren

Beitrag 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/
.........................
speack português italiano deutsch english castellà qt
Antworten