Qt 4.8
Public Functions | Protected Slots | Protected Functions | Properties | Friends | List of all members
QGraphicsSceneBspTreeIndex Class Reference

The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for discovering items in QGraphicsScene. More...

#include <qgraphicsscenebsptreeindex_p.h>

Inheritance diagram for QGraphicsSceneBspTreeIndex:
QGraphicsSceneIndex QObject

Public Functions

int bspTreeDepth ()
 
QList< QGraphicsItem * > estimateItems (const QRectF &rect, Qt::SortOrder order) const
 Returns an estimation visible items that are either inside or intersect with the specified rect and return a list sorted using order. More...
 
QList< QGraphicsItem * > estimateTopLevelItems (const QRectF &rect, Qt::SortOrder order) const
 
QList< QGraphicsItem * > items (Qt::SortOrder order=Qt::DescendingOrder) const
 Return all items in the BSP index and sort them using order. More...
 
 QGraphicsSceneBspTreeIndex (QGraphicsScene *scene=0)
 Constructs a BSP scene index for the given scene. More...
 
void setBspTreeDepth (int depth)
 
 ~QGraphicsSceneBspTreeIndex ()
 
- Public Functions inherited from QGraphicsSceneIndex
virtual QList< QGraphicsItem * > estimateItems (const QPointF &point, Qt::SortOrder order) const
 This virtual function return an estimation of items at position point. More...
 
virtual QList< QGraphicsItem * > items (const QPointF &pos, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform=QTransform()) const
 Returns all visible items that, depending on mode, are at the specified pos and return a list sorted using order. More...
 
virtual QList< QGraphicsItem * > items (const QRectF &rect, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform=QTransform()) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Returns all visible items that, depending on mode, are either inside or intersect with the specified rect and return a list sorted using order. More...
 
virtual QList< QGraphicsItem * > items (const QPolygonF &polygon, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform=QTransform()) const
 
virtual QList< QGraphicsItem * > items (const QPainterPath &path, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform=QTransform()) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Returns all visible items that, depending on mode, are either inside or intersect with the specified path and return a list sorted using order. More...
 
 QGraphicsSceneIndex (QGraphicsScene *scene=0)
 Constructs an abstract scene index for a given scene. More...
 
QGraphicsScenescene () const
 Returns the scene of this index. More...
 
virtual ~QGraphicsSceneIndex ()
 Destroys the scene index. More...
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
virtual bool eventFilter (QObject *, QEvent *)
 Filters events if this object has been installed as an event filter for the watched object. More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
virtual const QMetaObjectmetaObject () const
 Returns a pointer to the meta-object of this object. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 

Protected Slots

void updateSceneRect (const QRectF &rect)
 This method react to the rect change of the scene and reset the BSP tree index. More...
 
- Protected Slots inherited from QGraphicsSceneIndex
virtual void updateSceneRect (const QRectF &rect)
 Notifies the index that the scene's scene rect has changed. More...
 

Protected Functions

void addItem (QGraphicsItem *item)
 Add the item into the BSP index. More...
 
void clear ()
 Clear the all the BSP index. More...
 
bool event (QEvent *event)
 Used to catch the timer event. More...
 
void itemChange (const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const void *const value)
 This method react to the change of the item and use the value to update the BSP tree if necessary. More...
 
void prepareBoundingRectChange (const QGraphicsItem *item)
 Update the BSP when the item 's bounding rect has changed. More...
 
void removeItem (QGraphicsItem *item)
 Remove the item from the BSP index. More...
 
- Protected Functions inherited from QGraphicsSceneIndex
virtual void deleteItem (QGraphicsItem *item)
 This method is called when an item has been deleted. More...
 
 QGraphicsSceneIndex (QGraphicsSceneIndexPrivate &dd, QGraphicsScene *scene)
 
- Protected Functions inherited from QObject
virtual void childEvent (QChildEvent *)
 This event handler can be reimplemented in a subclass to receive child events. More...
 
virtual void connectNotify (const char *signal)
 This virtual function is called when something has been connected to signal in this object. More...
 
virtual void customEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive custom events. More...
 
virtual void disconnectNotify (const char *signal)
 This virtual function is called when something has been disconnected from signal in this object. More...
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal. More...
 
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *)
 This event handler can be reimplemented in a subclass to receive timer events for the object. More...
 

Properties

int bspTreeDepth
 the depth of the BSP index tree More...
 

Friends

class QGraphicsScene
 
class QGraphicsScenePrivate
 

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 
- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for discovering items in QGraphicsScene.

Since
4.6
Warning
This function is not part of the public interface.

QGraphicsSceneBspTreeIndex index use a BSP(Binary Space Partitioning) implementation to discover items quickly. This implementation is very efficient for static scenes. It has a depth that you can set. The depth directly affects performance and memory usage; the latter growing exponentially with the depth of the tree. With an optimal tree depth, the index can instantly determine the locality of items, even for scenes with thousands or millions of items. This also greatly improves rendering performance.

By default, the depth value is 0, in which case Qt will guess a reasonable default depth based on the size, location and number of items in the scene. If these parameters change frequently, however, you may experience slowdowns as the index retunes the depth internally. You can avoid potential slowdowns by fixating the tree depth through setting this property.

The depth of the tree and the size of the scene rectangle decide the granularity of the scene's partitioning. The size of each scene segment is determined by the following algorithm:

The BSP tree has an optimal size when each segment contains between 0 and 10 items.

See also
QGraphicsScene, QGraphicsView, QGraphicsSceneIndex

Definition at line 74 of file qgraphicsscenebsptreeindex_p.h.

Constructors and Destructors

◆ QGraphicsSceneBspTreeIndex()

QGraphicsSceneBspTreeIndex::QGraphicsSceneBspTreeIndex ( QGraphicsScene scene = 0)

Constructs a BSP scene index for the given scene.

Definition at line 453 of file qgraphicsscenebsptreeindex.cpp.

455 {
456 
457 }
QGraphicsSceneIndex(QGraphicsScene *scene=0)
Constructs an abstract scene index for a given scene.

◆ ~QGraphicsSceneBspTreeIndex()

QGraphicsSceneBspTreeIndex::~QGraphicsSceneBspTreeIndex ( )

Definition at line 459 of file qgraphicsscenebsptreeindex.cpp.

460 {
462  for (int i = 0; i < d->indexedItems.size(); ++i) {
463  // Ensure item bits are reset properly.
464  if (QGraphicsItem *item = d->indexedItems.at(i)) {
465  Q_ASSERT(!item->d_ptr->itemDiscovered);
466  item->d_ptr->index = -1;
467  }
468  }
469 }
double d
Definition: qnumeric_p.h:62
The QGraphicsItem class is the base class for all graphical items in a QGraphicsScene.
Definition: qgraphicsitem.h:89
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for disco...
#define Q_ASSERT(cond)
Definition: qglobal.h:1823
#define Q_D(Class)
Definition: qglobal.h:2482

Functions

◆ addItem()

void QGraphicsSceneBspTreeIndex::addItem ( QGraphicsItem item)
protectedvirtual

Add the item into the BSP index.

Implements QGraphicsSceneIndex.

Definition at line 500 of file qgraphicsscenebsptreeindex.cpp.

501 {
503  d->addItem(item);
504 }
double d
Definition: qnumeric_p.h:62
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for disco...
#define Q_D(Class)
Definition: qglobal.h:2482

◆ bspTreeDepth()

int QGraphicsSceneBspTreeIndex::bspTreeDepth ( )

Referenced by items().

◆ clear()

void QGraphicsSceneBspTreeIndex::clear ( )
protectedvirtual

Clear the all the BSP index.

Warning
This function is not part of the public interface.

Reimplemented from QGraphicsSceneIndex.

Definition at line 478 of file qgraphicsscenebsptreeindex.cpp.

479 {
481  d->bsp.clear();
482  d->lastItemCount = 0;
483  d->freeItemIndexes.clear();
484  for (int i = 0; i < d->indexedItems.size(); ++i) {
485  // Ensure item bits are reset properly.
486  if (QGraphicsItem *item = d->indexedItems.at(i)) {
487  Q_ASSERT(!item->d_ptr->itemDiscovered);
488  item->d_ptr->index = -1;
489  }
490  }
491  d->indexedItems.clear();
492  d->unindexedItems.clear();
493  d->untransformableItems.clear();
494  d->regenerateIndex = true;
495 }
double d
Definition: qnumeric_p.h:62
The QGraphicsItem class is the base class for all graphical items in a QGraphicsScene.
Definition: qgraphicsitem.h:89
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for disco...
#define Q_ASSERT(cond)
Definition: qglobal.h:1823
#define Q_D(Class)
Definition: qglobal.h:2482

◆ estimateItems()

QList< QGraphicsItem * > QGraphicsSceneBspTreeIndex::estimateItems ( const QRectF rect,
Qt::SortOrder  order 
) const
virtual

Returns an estimation visible items that are either inside or intersect with the specified rect and return a list sorted using order.

deviceTransform is the transformation apply to the view.

Implements QGraphicsSceneIndex.

Definition at line 546 of file qgraphicsscenebsptreeindex.cpp.

Referenced by estimateTopLevelItems().

547 {
549  return const_cast<QGraphicsSceneBspTreeIndexPrivate*>(d)->estimateItems(rect, order);
550 }
double d
Definition: qnumeric_p.h:62
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for disco...
#define Q_D(Class)
Definition: qglobal.h:2482
QList< QGraphicsItem * > estimateItems(const QRectF &rect, Qt::SortOrder order) const
Returns an estimation visible items that are either inside or intersect with the specified rect and r...

◆ estimateTopLevelItems()

QList< QGraphicsItem * > QGraphicsSceneBspTreeIndex::estimateTopLevelItems ( const QRectF rect,
Qt::SortOrder  order 
) const
virtual

Reimplemented from QGraphicsSceneIndex.

Definition at line 552 of file qgraphicsscenebsptreeindex.cpp.

553 {
555  return const_cast<QGraphicsSceneBspTreeIndexPrivate*>(d)->estimateItems(rect, order, /*onlyTopLevels=*/true);
556 }
double d
Definition: qnumeric_p.h:62
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for disco...
#define Q_D(Class)
Definition: qglobal.h:2482
QList< QGraphicsItem * > estimateItems(const QRectF &rect, Qt::SortOrder order) const
Returns an estimation visible items that are either inside or intersect with the specified rect and r...

◆ event()

bool QGraphicsSceneBspTreeIndex::event ( QEvent event)
protectedvirtual

Used to catch the timer event.

Reimplemented Function

Warning
This function is not part of the public interface.

Reimplemented from QObject.

Definition at line 721 of file qgraphicsscenebsptreeindex.cpp.

722 {
724  switch (event->type()) {
725  case QEvent::Timer:
726  if (d->indexTimerId && static_cast<QTimerEvent *>(event)->timerId() == d->indexTimerId) {
727  if (d->restartIndexTimer) {
728  d->restartIndexTimer = false;
729  } else {
730  // this call will kill the timer
731  d->_q_updateIndex();
732  }
733  }
734  // Fallthrough intended - support timers in subclasses.
735  default:
736  return QObject::event(event);
737  }
738  return true;
739 }
double d
Definition: qnumeric_p.h:62
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for disco...
virtual bool event(QEvent *)
This virtual function receives events to an object and should return true if the event e was recogniz...
Definition: qobject.cpp:1200
#define Q_D(Class)
Definition: qglobal.h:2482
Type type() const
Returns the event type.
Definition: qcoreevent.h:303

◆ itemChange()

void QGraphicsSceneBspTreeIndex::itemChange ( const QGraphicsItem item,
QGraphicsItem::GraphicsItemChange  change,
const void *const  value 
)
protectedvirtual

This method react to the change of the item and use the value to update the BSP tree if necessary.

Warning
This function is not part of the public interface.

Reimplemented from QGraphicsSceneIndex.

Definition at line 662 of file qgraphicsscenebsptreeindex.cpp.

663 {
665  switch (change) {
667  // Handle ItemIgnoresTransformations
668  QGraphicsItem::GraphicsItemFlags newFlags = *static_cast<const QGraphicsItem::GraphicsItemFlags *>(value);
669  bool ignoredTransform = item->d_ptr->flags & QGraphicsItem::ItemIgnoresTransformations;
670  bool willIgnoreTransform = newFlags & QGraphicsItem::ItemIgnoresTransformations;
671  bool clipsChildren = item->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape;
672  bool willClipChildren = newFlags & QGraphicsItem::ItemClipsChildrenToShape;
673  if ((ignoredTransform != willIgnoreTransform) || (clipsChildren != willClipChildren)) {
674  QGraphicsItem *thatItem = const_cast<QGraphicsItem *>(item);
675  // Remove item and its descendants from the index and append
676  // them to the list of unindexed items. Then, when the index
677  // is updated, they will be put into the bsp-tree or the list
678  // of untransformable items.
679  d->removeItem(thatItem, /*recursive=*/true, /*moveToUnidexedItems=*/true);
680  }
681  break;
682  }
684  d->invalidateSortCache();
685  break;
687  d->invalidateSortCache();
688  // Handle ItemIgnoresTransformations
689  const QGraphicsItem *newParent = static_cast<const QGraphicsItem *>(value);
690  bool ignoredTransform = item->d_ptr->itemIsUntransformable();
691  bool willIgnoreTransform = (item->d_ptr->flags & QGraphicsItem::ItemIgnoresTransformations)
692  || (newParent && newParent->d_ptr->itemIsUntransformable());
693  bool ancestorClippedChildren = item->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren;
694  bool ancestorWillClipChildren = newParent
697  if ((ignoredTransform != willIgnoreTransform) || (ancestorClippedChildren != ancestorWillClipChildren)) {
698  QGraphicsItem *thatItem = const_cast<QGraphicsItem *>(item);
699  // Remove item and its descendants from the index and append
700  // them to the list of unindexed items. Then, when the index
701  // is updated, they will be put into the bsp-tree or the list
702  // of untransformable items.
703  d->removeItem(thatItem, /*recursive=*/true, /*moveToUnidexedItems=*/true);
704  }
705  break;
706  }
707  default:
708  break;
709  }
710 }
double d
Definition: qnumeric_p.h:62
QScopedPointer< QGraphicsItemPrivate > d_ptr
The QGraphicsItem class is the base class for all graphical items in a QGraphicsScene.
Definition: qgraphicsitem.h:89
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for disco...
#define Q_D(Class)
Definition: qglobal.h:2482
bool itemIsUntransformable() const

◆ items()

QList< QGraphicsItem * > QGraphicsSceneBspTreeIndex::items ( Qt::SortOrder  order = Qt::DescendingOrder) const
virtual

Return all items in the BSP index and sort them using order.

Implements QGraphicsSceneIndex.

Definition at line 563 of file qgraphicsscenebsptreeindex.cpp.

564 {
566  const_cast<QGraphicsSceneBspTreeIndexPrivate*>(d)->purgeRemovedItems();
567  QList<QGraphicsItem *> itemList;
568 
569  // If freeItemIndexes is empty, we know there are no holes in indexedItems and
570  // unindexedItems.
571  if (d->freeItemIndexes.isEmpty()) {
572  if (d->unindexedItems.isEmpty()) {
573  itemList = d->indexedItems;
574  } else {
575  itemList = d->indexedItems + d->unindexedItems;
576  }
577  } else {
578  // Rebuild the list of items to avoid holes. ### We could also just
579  // compress the item lists at this point.
580  foreach (QGraphicsItem *item, d->indexedItems + d->unindexedItems) {
581  if (item)
582  itemList << item;
583  }
584  }
585  if (order != -1) {
586  //We sort descending order
587  d->sortItems(&itemList, order, d->sortCacheEnabled);
588  }
589  return itemList;
590 }
double d
Definition: qnumeric_p.h:62
The QGraphicsItem class is the base class for all graphical items in a QGraphicsScene.
Definition: qgraphicsitem.h:89
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for disco...
#define Q_D(Class)
Definition: qglobal.h:2482
The QList class is a template class that provides lists.
Definition: qdatastream.h:62

◆ prepareBoundingRectChange()

void QGraphicsSceneBspTreeIndex::prepareBoundingRectChange ( const QGraphicsItem item)
protectedvirtual

Update the BSP when the item 's bounding rect has changed.

Warning
This function is not part of the public interface.

Reimplemented from QGraphicsSceneIndex.

Definition at line 522 of file qgraphicsscenebsptreeindex.cpp.

523 {
524  if (!item)
525  return;
526 
527  if (item->d_ptr->index == -1 || item->d_ptr->itemIsUntransformable()
529  return; // Item is not in BSP tree; nothing to do.
530  }
531 
533  QGraphicsItem *thatItem = const_cast<QGraphicsItem *>(item);
534  d->removeItem(thatItem, /*recursive=*/false, /*moveToUnindexedItems=*/true);
535  for (int i = 0; i < item->d_ptr->children.size(); ++i) // ### Do we really need this?
537 }
double d
Definition: qnumeric_p.h:62
QScopedPointer< QGraphicsItemPrivate > d_ptr
The QGraphicsItem class is the base class for all graphical items in a QGraphicsScene.
Definition: qgraphicsitem.h:89
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for disco...
#define Q_D(Class)
Definition: qglobal.h:2482
bool itemIsUntransformable() const
const T & at(int i) const
Returns the item at index position i in the list.
Definition: qlist.h:468
int size() const
Returns the number of items in the list.
Definition: qlist.h:137
void prepareBoundingRectChange(const QGraphicsItem *item)
Update the BSP when the item &#39;s bounding rect has changed.
QList< QGraphicsItem * > children

◆ removeItem()

void QGraphicsSceneBspTreeIndex::removeItem ( QGraphicsItem item)
protectedvirtual

Remove the item from the BSP index.

Implements QGraphicsSceneIndex.

Definition at line 509 of file qgraphicsscenebsptreeindex.cpp.

510 {
512  d->removeItem(item);
513 }
double d
Definition: qnumeric_p.h:62
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for disco...
#define Q_D(Class)
Definition: qglobal.h:2482

◆ setBspTreeDepth()

void QGraphicsSceneBspTreeIndex::setBspTreeDepth ( int  depth)

Definition at line 628 of file qgraphicsscenebsptreeindex.cpp.

Referenced by QGraphicsScene::setBspTreeDepth().

629 {
631  if (d->bspTreeDepth == depth)
632  return;
633  d->bspTreeDepth = depth;
634  d->resetIndex();
635 }
double d
Definition: qnumeric_p.h:62
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for disco...
#define Q_D(Class)
Definition: qglobal.h:2482

◆ updateSceneRect

void QGraphicsSceneBspTreeIndex::updateSceneRect ( const QRectF rect)
protectedslot

This method react to the rect change of the scene and reset the BSP tree index.

Warning
This function is not part of the public interface.

Definition at line 646 of file qgraphicsscenebsptreeindex.cpp.

647 {
649  d->sceneRect = rect;
650  d->resetIndex();
651 }
double d
Definition: qnumeric_p.h:62
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for disco...
#define Q_D(Class)
Definition: qglobal.h:2482

Friends and Related Functions

◆ QGraphicsScene

friend class QGraphicsScene
friend

Definition at line 108 of file qgraphicsscenebsptreeindex_p.h.

◆ QGraphicsScenePrivate

Definition at line 109 of file qgraphicsscenebsptreeindex_p.h.

Properties

◆ bspTreeDepth

int QGraphicsSceneBspTreeIndex::bspTreeDepth
private

the depth of the BSP index tree

Since
4.6

This value determines the depth of BSP tree. The depth directly affects performance and memory usage; the latter growing exponentially with the depth of the tree. With an optimal tree depth, the index can instantly determine the locality of items, even for scenes with thousands or millions of items. This also greatly improves rendering performance.

By default, the value is 0, in which case Qt will guess a reasonable default depth based on the size, location and number of items in the scene. If these parameters change frequently, however, you may experience slowdowns as the index retunes the depth internally. You can avoid potential slowdowns by fixating the tree depth through setting this property.

The depth of the tree and the size of the scene rectangle decide the granularity of the scene's partitioning. The size of each scene segment is determined by the following algorithm:

The BSP tree has an optimal size when each segment contains between 0 and 10 items.

Definition at line 77 of file qgraphicsscenebsptreeindex_p.h.

Referenced by QGraphicsScene::setItemIndexMethod().


The documentation for this class was generated from the following files: