[Qt-interest] QGraphicsTextItem adjustSize()

Stacy Alley salley at usgs.gov
Mon Feb 23 18:56:36 CET 2009


Hi Sean,
This look promising!  I'm wondering what type of object you are 
implementing the resizeEvent method in
so that you have a rect() method (when you calculate dx and dy)?  I'm 
inside a QGraphicsPolygonItem and I have access to boundingRect but not 
rect.
Thanks-
Stacy

Sean Harmer wrote:
> On Monday 23 February 2009 17:03:45 Stacy Alley wrote:
>   
>> Hello,
>> I'm working with a very large QGraphicsScene (width =1.92991e+08
>> height=9.86328e+07)
>> I add QGraphicsPolygonItems to the scene that represent a footprint of
>> image data.  I'm also trying to add
>> a QGraphicsTextItem on top of the polygon item to label the footprint
>> with it's filename.  I'm having a hard time
>> setting the size for the font of the text item.  I just found the
>> QGraphicsItem::adjustSize() method, but that did not
>> do anything.  Well, at least I can't see what it did because I can not
>> even see the text item.  (Font too small I believe.)
>> Does anybody have an hints for me as to how I set the font size for
>> these text items?
>>     
> You're in luck I was fighting with this at the weekend! Implement the 
> resizeEvent() function for the item that contains your QGraphicsTextItem and 
> do something like this:
>
> void Plot::resizeEvent( QGraphicsSceneResizeEvent* )
> {
>     // Centre the contained text item
>     QTransform m = sceneTransform();
>     m_text->resetTransform();
>     m_text->scale( 1.0 / m.m11(), 1.0 / m.m22() );
>     QRectF m_textRect = m_text->boundingRect();
>     QPolygonF itemTextPoly = m_text->mapToItem( this, m_textRect );
>     QRectF itemTextRect = itemTextPoly.boundingRect();
>     double dx = 0.5 * m.m11() * ( rect().width() - itemTextRect.width() );
>     double dy = 0.5 * m.m22() * ( rect().height() - itemTextRect.height() );
>     m_text->translate( dx, dy );
> }
>
> The basic idea is to scale by the inverse of the transform applied by the 
> scene. That way you can set a sensible font size and it should be scaled to 
> your scene as you expect.
>
> HTH,
>
> Sean
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
>   




More information about the Qt-interest-old mailing list