Hello, Im new to Qt, and just started to learn it few weeks ago.

Im interested in QGraphicsView framework in general, and as an exercise I 
decided to write a custom QGraphicsLayout.

Well, I knew it will be hard, but I turned out to be harder, and what's more - 
impossible without looking the actual Qt code (for  QGraphicsLinearLayout and 
QGraphicsWidget for example)

Anyway, maybe Im just a hopeless noob... 
still I have 2 questions that I think are adequate:


First. 
The docs for QGraphicsLayoutItem::setOwnedByLayout say:
"Sets whether a layout should delete this item in its destructor or not. 
ownership must be true to in order for the layout to delete it."

But the actual QGraphicsLayout deos not recpect this! Only its subclasses 
respect this (QGraphicsLinearLayout) by adding code to the destructor.


Second. 
The QGraphicsLayout's  addChildLayoutItem function is commented as:

"This function is called from subclasses to add a layout item to a layout. 
It takes care of automatically reparenting graphics items, if needed.
If layout item is already in a layout, it will remove it  from that layout."
But this function is defined as private, and there is no (legal) way a subclass 
of QGraphicsLayout to call it!
Again QGraphicsLinearLayout does use this feature, illegally, by including the 
private headers and classes for QGraphicsLayout.

In general automatic reparenting should be part of QGraphicsLayout API as the 
docs suggest:

QGraphicsLayoutItem::setGraphicsItem:
"If the QGraphicsLayoutItem represents a QGraphicsItem, and it wants to take 
advantage of the automatic reparenting capabilities of 
QGraphicsLayout it should set this value. ..."

Right now the only automatic reparenting one can have with "pure" 
QGraphicsLayout is through QGraphicsWidget and its setLayout function, but that 
does not solve the problem of adding items to a layout, that get reparent in 
order to show up.


So if I want a custom layout with these two important (basic) features, I 
either have to subclass from  QGraphicsLinearLayout, which is overkill and not 
The Right Thing, or use the techniques from the Qt source, which is ugly or 
plain wrong.

If there is a "right" workflow for writing a real custom layout, what it should 
be?
Thank you
MihailNaydenov


      
_______________________________________________
Qt4-preview-feedback mailing list
[email protected]
http://lists.trolltech.com/mailman/listinfo/qt4-preview-feedback

Reply via email to