Qt 4.8
|
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for discovering items in QGraphicsScene. More...
#include <qgraphicsscenebsptreeindex_p.h>
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... | |
QGraphicsScene * | scene () 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 QObjectList & | children () 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< QByteArray > | dynamicPropertyNames () 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 > | |
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 QMetaObject * | metaObject () 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 |
QObject * | parent () 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... | |
QThread * | thread () const |
Returns the thread in which the object lives. More... | |
QObjectUserData * | userData (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... | |
QObject * | sender () 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< QObjectData > | d_ptr |
Static Protected Variables inherited from QObject | |
static const QMetaObject | staticQtMetaObject |
Related Functions inherited from QObject | |
T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QRegExp ®Exp)() |
T * | qobject_cast (QObject *object) |
QObjectList | |
void * | qt_find_obj_child (QObject *parent, const char *type, const QString &name) |
Returns a pointer to the object named name that inherits type and with a given parent. More... | |
The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for discovering items in QGraphicsScene.
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.
Definition at line 74 of file qgraphicsscenebsptreeindex_p.h.
QGraphicsSceneBspTreeIndex::QGraphicsSceneBspTreeIndex | ( | QGraphicsScene * | scene = 0 | ) |
Constructs a BSP scene index for the given scene.
Definition at line 453 of file qgraphicsscenebsptreeindex.cpp.
QGraphicsSceneBspTreeIndex::~QGraphicsSceneBspTreeIndex | ( | ) |
Definition at line 459 of file qgraphicsscenebsptreeindex.cpp.
|
protectedvirtual |
Add the item into the BSP index.
Implements QGraphicsSceneIndex.
Definition at line 500 of file qgraphicsscenebsptreeindex.cpp.
int QGraphicsSceneBspTreeIndex::bspTreeDepth | ( | ) |
Referenced by items().
|
protectedvirtual |
Clear the all the BSP index.
Reimplemented from QGraphicsSceneIndex.
Definition at line 478 of file qgraphicsscenebsptreeindex.cpp.
|
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().
|
virtual |
Reimplemented from QGraphicsSceneIndex.
Definition at line 552 of file qgraphicsscenebsptreeindex.cpp.
|
protectedvirtual |
Used to catch the timer event.
Reimplemented Function
Reimplemented from QObject.
Definition at line 721 of file qgraphicsscenebsptreeindex.cpp.
|
protectedvirtual |
This method react to the change of the item and use the value to update the BSP tree if necessary.
Reimplemented from QGraphicsSceneIndex.
Definition at line 662 of file qgraphicsscenebsptreeindex.cpp.
|
virtual |
Return all items in the BSP index and sort them using order.
Implements QGraphicsSceneIndex.
Definition at line 563 of file qgraphicsscenebsptreeindex.cpp.
|
protectedvirtual |
Update the BSP when the item 's bounding rect has changed.
Reimplemented from QGraphicsSceneIndex.
Definition at line 522 of file qgraphicsscenebsptreeindex.cpp.
|
protectedvirtual |
Remove the item from the BSP index.
Implements QGraphicsSceneIndex.
Definition at line 509 of file qgraphicsscenebsptreeindex.cpp.
void QGraphicsSceneBspTreeIndex::setBspTreeDepth | ( | int | depth | ) |
Definition at line 628 of file qgraphicsscenebsptreeindex.cpp.
Referenced by QGraphicsScene::setBspTreeDepth().
|
protectedslot |
This method react to the rect change of the scene and reset the BSP tree index.
Definition at line 646 of file qgraphicsscenebsptreeindex.cpp.
|
friend |
Definition at line 108 of file qgraphicsscenebsptreeindex_p.h.
|
friend |
Definition at line 109 of file qgraphicsscenebsptreeindex_p.h.
|
private |
the depth of the BSP index tree
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().