GammaRay API Documentation 3.0.1
Classes | Signals | Public Member Functions | Static Public Member Functions | List of all members
GammaRay::Probe Class Reference

Central entity of GammaRay: The probe is tracking the Qt application under test. More...

#include <probe.h>

Inheritance diagram for GammaRay::Probe:
Inheritance graph
[legend]

Signals

void aboutToDetach ()
 
void nonQObjectSelected (void *object, const QString &typeName)
 
void objectCreated (QObject *obj)
 Emitted for newly created QObjects.
 
void objectDestroyed (QObject *obj)
 Emitted for destroyed objects.
 
void objectFavorited (QObject *obj)
 
void objectReparented (QObject *obj)
 
void objectSelected (QObject *object, const QPoint &pos)
 Emitted when the user selected object at position pos in the probed application.
 
void objectUnfavorited (QObject *obj)
 

Public Member Functions

const QVector< QObject * > & allQObjects () const
 Returns a list of all QObjects we know about.
 
void discoverObject (QObject *object)
 Notify the probe about QObjects your plug-in can discover by using information about the types it can handle.
 
bool filterObject (QObject *obj) const
 Determines if the specified QObject belongs to the GammaRay Probe or Window.
 
void installGlobalEventFilter (QObject *filter)
 Install a global event filter.
 
bool isValidObject (const QObject *obj) const
 Check whether obj is still valid.
 
void markObjectAsFavorite (QObject *object)
 Mark an object as favorite.
 
MetaObjectRegistry * metaObjectRegistry () const
 
QAbstractItemModelobjectListModel () const
 Returns the object list model.
 
QAbstractItemModelobjectTreeModel () const
 Returns the object tree model.
 
ProblemCollector * problemCollector () const
 
void registerSignalSpyCallbackSet (const SignalSpyCallbackSet &callbacks)
 Register a signal spy callback set.
 
void removeObjectAsFavorite (QObject *object)
 Unmark an object as favorite.
 
void selectObject (QObject *object, const QPoint &pos=QPoint())
 Notify the probe about the user selecting one of "your" objects via in-app interaction.
 
void selectObject (QObject *object, const QString &toolId, const QPoint &pos=QPoint())
 
void selectObject (void *object, const QString &typeName)
 Notify the probe about the user selecting one of "your" objects.
 
- Public Member Functions inherited from QObject
 QObject (QObject *parent)
 
bool blockSignals (bool block)
 
const QObjectListchildren () const const
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
void deleteLater ()
 
void destroyed (QObject *obj)
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectInfo ()
 
void dumpObjectInfo () const const
 
void dumpObjectTree ()
 
void dumpObjectTree () const const
 
QList< QByteArraydynamicPropertyNames () const const
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
bool inherits (const char *className) const const
 
void installEventFilter (QObject *filterObj)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
void killTimer (int id)
 
virtual const QMetaObjectmetaObject () const const
 
void moveToThread (QThread *targetThread)
 
QString objectName () const const
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
QVariant property (const char *name) const const
 
 Q_CLASSINFO (Name, Value)
 
 Q_DISABLE_COPY (Class)
 
 Q_DISABLE_COPY_MOVE (Class)
 
 Q_DISABLE_MOVE (Class)
 
 Q_EMIT Q_EMIT
 
 Q_ENUM (...)
 
 Q_ENUM_NS (...)
 
 Q_ENUMS (...)
 
 Q_FLAG (...)
 
 Q_FLAG_NS (...)
 
 Q_FLAGS (...)
 
 Q_GADGET Q_GADGET
 
 Q_INTERFACES (...)
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_NAMESPACE Q_NAMESPACE
 
 Q_NAMESPACE_EXPORT (EXPORT_MACRO)
 
 Q_OBJECT Q_OBJECT
 
 Q_PROPERTY (...)
 
 Q_REVISION Q_REVISION
 
 Q_SET_OBJECT_NAME (Object)
 
 Q_SIGNAL Q_SIGNAL
 
 Q_SIGNALS Q_SIGNALS
 
 Q_SLOT Q_SLOT
 
 Q_SLOTS Q_SLOTS
 
qFindChild (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
 
QList< T > qFindChildren (const QObject *obj, const QString &name)
 
qobject_cast (const QObject *object)
 
qobject_cast (QObject *object)
 
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
 
void removeEventFilter (QObject *obj)
 
void setObjectName (const QString &name)
 
void setParent (QObject *parent)
 
bool setProperty (const char *name, const QVariant &value)
 
bool signalsBlocked () const const
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
QThreadthread () const const
 

Static Public Member Functions

static Probeinstance ()
 Returns the current instance of the probe.
 
static bool isInitialized ()
 Returns true if the probe is initialized, false otherwise.
 
static bool needsObjectDiscovery ()
 Returns true if we haven't been able to track all objects from startup, ie.
 
static SourceLocation objectCreationSourceLocation (QObject *object)
 Returns the source code location object was created at.
 
static Execution::Trace objectCreationStackTrace (QObject *object)
 Returns the entire stack trace for the creation of object.
 
static QRecursiveMutexobjectLock ()
 Lock this to check the validity of a QObject and to access it safely afterwards.
 
static void registerModel (const QString &objectName, QAbstractItemModel *model)
 Register a model for remote usage.
 
- Static Public Member Functions inherited from QObject
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 

Additional Inherited Members

- Public Attributes inherited from QObject
typedef QObjectList
 
- Protected Member Functions inherited from QObject
virtual void childEvent (QChildEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void customEvent (QEvent *event)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
int receivers (const char *signal) const const
 
QObjectsender () const const
 
int senderSignalIndex () const const
 
virtual void timerEvent (QTimerEvent *event)
 
- Properties inherited from QObject
 objectName
 

Detailed Description

Central entity of GammaRay: The probe is tracking the Qt application under test.

Note
The Probe lifetime is strongly coupled with the QCoreApplication lifetime, if there's no QCoreApplication instance, then there's no probe.

To get a hold of the probe, call Probe::instance()

Member Function Documentation

◆ allQObjects()

const QVector< QObject * > & GammaRay::Probe::allQObjects ( ) const

Returns a list of all QObjects we know about.

Note
This getter can be used without the object lock. Do acquire the object lock and check the pointer with isValidObject though, before dereferencing any of the QObject pointers.

◆ discoverObject()

void GammaRay::Probe::discoverObject ( QObject object)

Notify the probe about QObjects your plug-in can discover by using information about the types it can handle.

Only use this if needsObjectDiscovery() returns true to maximise performance.

See also
needsObjectDiscovery()
Since
2.0

◆ filterObject()

bool GammaRay::Probe::filterObject ( QObject obj) const

Determines if the specified QObject belongs to the GammaRay Probe or Window.

These objects should not be tracked or shown to the user, hence must be explicitly filtered.

Parameters
objis a pointer to a QObject instance.
Returns
true if the specified QObject belongs to the GammaRay Probe or Window; false otherwise.

◆ installGlobalEventFilter()

void GammaRay::Probe::installGlobalEventFilter ( QObject filter)

Install a global event filter.

Use this rather than installing the filter manually on QCoreApplication, this will filter out GammaRay-internal events and objects already for you.

◆ instance()

static Probe * GammaRay::Probe::instance ( )
static

Returns the current instance of the probe.

Note
You must hold the object lock when using the probe's object tracking functionality.
See also
objectLock()

◆ isValidObject()

bool GammaRay::Probe::isValidObject ( const QObject obj) const
inline

Check whether obj is still valid.

Note
The objectLock must be locked when this is called!

◆ markObjectAsFavorite()

void GammaRay::Probe::markObjectAsFavorite ( QObject object)

Mark an object as favorite.

Favorite objects might be shown in a separate view Connect to the objectFavorited(QObject*) signal on probe() to know when an object gets marked as favorited

◆ needsObjectDiscovery()

static bool GammaRay::Probe::needsObjectDiscovery ( )
static

Returns true if we haven't been able to track all objects from startup, ie.

usually when attaching at runtime. If this is the case, we try to discover QObjects by walking the hierarchy, starting from known singletons, and by watching out for unknown receivers of events. This is far from complete obviously, and plug-ins can help finding more objects, using specific knowledge about the types they are responsible for.

Connect to the objectAdded(QObject*) signal on probe(), and call discoverObject(QObject*) for "your" objects.

Since
2.5

◆ objectCreated

void GammaRay::Probe::objectCreated ( QObject obj)
signal

Emitted for newly created QObjects.

Note:

  • This signal is always emitted from the thread the probe exists in.
  • The signal is emitted delayed enough for the QObject to have been fully constructed, i.e. on the next event loop re-entry.
  • The signal is not emitted if the object has been destroyed completely again meanwhile, e.g. for objects that only existed on the stack.
  • For objects created and destroyed in other threads, this signal might be emitted after its dtor has been entered (in case of short-lived objects), but before it has been finished. At this point the dtor might have already emitted the destroyed() signal and informed smart pointers about the destruction. This means you must not rely on any of this for object lifetime tracking for objects from other threads. Use objectDestroyed() instead.
  • Do not put obj into a QWeakPointer, even if it's exclusively handled in the same thread as the Probe instance. Qt4 asserts if target code tries to put obj into a QSharedPointer afterwards.
  • The objectLock() is locked.

◆ objectDestroyed

void GammaRay::Probe::objectDestroyed ( QObject obj)
signal

Emitted for destroyed objects.

Note:

  • This signal is emitted from the thread the probe exists in.
  • The signal is emitted from the end of the QObject dtor, dereferencing obj is no longer safe at this point.
  • In a multi-threaded application, this signal might reach you way after obj has been destroyed, see isValidObject() for a way to check if the object is still valid before accessing it.
  • The objectLock() is locked.

◆ objectListModel()

QAbstractItemModel * GammaRay::Probe::objectListModel ( ) const

Returns the object list model.

Returns
a pointer to a QAbstractItemModel instance.

◆ objectTreeModel()

QAbstractItemModel * GammaRay::Probe::objectTreeModel ( ) const

Returns the object tree model.

Returns
a pointer to a QAbstractItemModel instance.

◆ registerModel()

static void GammaRay::Probe::registerModel ( const QString objectName,
QAbstractItemModel model 
)
static

Register a model for remote usage.

Parameters
objectNameUnique identifier for the model, typically in reverse domain notation.
modelThe model to register.

◆ registerSignalSpyCallbackSet()

void GammaRay::Probe::registerSignalSpyCallbackSet ( const SignalSpyCallbackSet callbacks)

Register a signal spy callback set.

Signal indexes provided as arguments are mapped to method indexes, ie. argument semantics are the same with Qt4 and Qt5.

Since
2.2

◆ removeObjectAsFavorite()

void GammaRay::Probe::removeObjectAsFavorite ( QObject object)

Unmark an object as favorite.

Connect to the objectUnfavorited(QObject*) signal on probe() to know when an object gets removed as favorited

◆ selectObject() [1/2]

void GammaRay::Probe::selectObject ( QObject object,
const QPoint pos = QPoint() 
)

Notify the probe about the user selecting one of "your" objects via in-app interaction.

If you know the exact position the user interacted with, pass that in as pos.

Since
2.0

◆ selectObject() [2/2]

void GammaRay::Probe::selectObject ( void *  object,
const QString typeName 
)

Notify the probe about the user selecting one of "your" objects.

Since
2.1

© 2010-2023 Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
GammaRay Qt-application inspection and manipulation tool
https://www.kdab.com/development-resources/qt-tools/gammaray/
Generated on Tue Dec 26 2023 00:01:47 for GammaRay API Documentation by doxygen 1.9.8