Qt 4.8
Public Functions | Private Functions | Friends | List of all members
QDeclarativeContext Class Reference

The QDeclarativeContext class defines a context within a QML engine. More...

#include <qdeclarativecontext.h>

Inheritance diagram for QDeclarativeContext:
QObject

Public Functions

QUrl baseUrl () const
 Returns the base url of the component, or the containing component if none is set. More...
 
QObjectcontextObject () const
 Return the context object, or 0 if there is no context object. More...
 
QVariant contextProperty (const QString &) const
 Returns the value of the name property for this context as a QVariant. More...
 
QDeclarativeEngineengine () const
 Return the context's QDeclarativeEngine, or 0 if the context has no QDeclarativeEngine or the QDeclarativeEngine was destroyed. More...
 
bool isValid () const
 Returns whether the context is valid. More...
 
QDeclarativeContextparentContext () const
 Return the context's parent QDeclarativeContext, or 0 if this context has no parent or if the parent has been destroyed. More...
 
 QDeclarativeContext (QDeclarativeEngine *parent, QObject *objParent=0)
 Create a new QDeclarativeContext as a child of engine's root context, and the QObject parent. More...
 
 QDeclarativeContext (QDeclarativeContext *parent, QObject *objParent=0)
 Create a new QDeclarativeContext with the given parentContext, and the QObject parent. More...
 
QUrl resolvedUrl (const QUrl &)
 Resolves the URL src relative to the URL of the containing component. More...
 
void setBaseUrl (const QUrl &)
 Explicitly sets the url resolvedUrl() will use for relative references to baseUrl. More...
 
void setContextObject (QObject *)
 Set the context object. More...
 
void setContextProperty (const QString &, QObject *)
 Set the value of the name property on this context. More...
 
void setContextProperty (const QString &, const QVariant &)
 Set a the value of the name property on this context. More...
 
virtual ~QDeclarativeContext ()
 Destroys the QDeclarativeContext. 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 event (QEvent *)
 This virtual function receives events to an object and should return true if the event e was recognized and processed. 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...
 

Private Functions

 QDeclarativeContext (QDeclarativeContextData *)
 
 QDeclarativeContext (QDeclarativeEngine *, bool)
 

Friends

class QDeclarativeBoundSignalProxy
 
class QDeclarativeComponent
 
class QDeclarativeComponentPrivate
 
class QDeclarativeContextData
 
class QDeclarativeContextScriptClass
 
class QDeclarativeEngine
 
class QDeclarativeEnginePrivate
 
class QDeclarativeExpression
 
class QDeclarativeExpressionPrivate
 
class QDeclarativeObjectScriptClass
 
class QDeclarativeScriptPrivate
 
class QDeclarativeVME
 

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 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...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

The QDeclarativeContext class defines a context within a QML engine.

Since
4.7

Contexts allow data to be exposed to the QML components instantiated by the QML engine.

Each QDeclarativeContext contains a set of properties, distinct from its QObject properties, that allow data to be explicitly bound to a context by name. The context properties are defined and updated by calling QDeclarativeContext::setContextProperty(). The following example shows a Qt model being bound to a context and then accessed from a QML file.

QStringListModel modelData;
context->setContextProperty("myModel", &modelData);
component.setData("import QtQuick 1.0\nListView { model: myModel }", QUrl());
QObject *window = component.create(context);

Note it is the responsibility of the creator to delete any QDeclarativeContext it constructs. If the context object in the example is no longer needed when the window component instance is destroyed, the context must be destroyed explicitly. The simplest way to ensure this is to set window as the parent of context.

To simplify binding and maintaining larger data sets, a context object can be set on a QDeclarativeContext. All the properties of the context object are available by name in the context, as though they were all individually added through calls to QDeclarativeContext::setContextProperty(). Changes to the property's values are detected through the property's notify signal. Setting a context object is both faster and easier than manually adding and maintaing context property values.

The following example has the same effect as the previous one, but it uses a context object.

class MyDataSet : ... {
...
...
};
MyDataSet myDataSet;
context->setContextObject(&myDataSet);
component.setData("import QtQuick 1.0\nListView { model: myModel }", QUrl());
component.create(context);

All properties added explicitly by QDeclarativeContext::setContextProperty() take precedence over the context object's properties.

The Context Hierarchy

Contexts form a hierarchy. The root of this hierarchy is the QML engine's QDeclarativeEngine::rootContext(){root context}. Child contexts inherit the context properties of their parents; if a child context sets a context property that already exists in its parent, the new context property overrides that of the parent.

The following example defines two contexts - context1 and context2. The second context overrides the "b" context property inherited from the first with a new value.

QDeclarativeContext *context2 = new QDeclarativeContext(context1);
context1->setContextProperty("a", 12);
context1->setContextProperty("b", 12);
context2->setContextProperty("b", 15);

While QML objects instantiated in a context are not strictly owned by that context, their bindings are. If a context is destroyed, the property bindings of outstanding QML objects will stop evaluating.

Warning
Setting the context object or adding new context properties after an object has been created in that context is an expensive operation (essentially forcing all bindings to reevaluate). Thus whenever possible you should complete "setup" of the context before using it to create any objects.
See also
{Using QML Bindings in C++ Applications}

Definition at line 64 of file qdeclarativecontext.h.

Constructors and Destructors

◆ QDeclarativeContext() [1/4]

QDeclarativeContext::QDeclarativeContext ( QDeclarativeEngine parent,
QObject objParent = 0 
)

Create a new QDeclarativeContext as a child of engine's root context, and the QObject parent.

Definition at line 179 of file qdeclarativecontext.cpp.

180 : QObject(*(new QDeclarativeContextPrivate), parent)
181 {
183  d->data = new QDeclarativeContextData(this);
184 
185  d->data->setParent(engine?QDeclarativeContextData::get(engine->rootContext()):0);
186 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
friend class QDeclarativeContextData
QDeclarativeContext * rootContext() const
Returns the engine&#39;s root context.
Q_INVOKABLE QObject(QObject *parent=0)
Constructs an object with parent object parent.
Definition: qobject.cpp:753
The QDeclarativeContext class defines a context within a QML engine.
QDeclarativeEngine * engine() const
Return the context&#39;s QDeclarativeEngine, or 0 if the context has no QDeclarativeEngine or the QDeclar...
static QDeclarativeContextData * get(QDeclarativeContext *context)

◆ QDeclarativeContext() [2/4]

QDeclarativeContext::QDeclarativeContext ( QDeclarativeContext parent,
QObject objParent = 0 
)

Create a new QDeclarativeContext with the given parentContext, and the QObject parent.

Definition at line 192 of file qdeclarativecontext.cpp.

193 : QObject(*(new QDeclarativeContextPrivate), parent)
194 {
196  d->data = new QDeclarativeContextData(this);
197 
199 }
double d
Definition: qnumeric_p.h:62
QDeclarativeContext * parentContext() const
Return the context&#39;s parent QDeclarativeContext, or 0 if this context has no parent or if the parent ...
#define Q_D(Class)
Definition: qglobal.h:2482
friend class QDeclarativeContextData
Q_INVOKABLE QObject(QObject *parent=0)
Constructs an object with parent object parent.
Definition: qobject.cpp:753
The QDeclarativeContext class defines a context within a QML engine.
static QDeclarativeContextData * get(QDeclarativeContext *context)

◆ ~QDeclarativeContext()

QDeclarativeContext::~QDeclarativeContext ( )
virtual

Destroys the QDeclarativeContext.

Any expressions, or sub-contexts dependent on this context will be invalidated, but not destroyed (unless they are parented to the QDeclarativeContext object).

Definition at line 218 of file qdeclarativecontext.cpp.

219 {
221 
222  if (!d->data->isInternal)
223  d->data->destroy();
224 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QDeclarativeContext class defines a context within a QML engine.

◆ QDeclarativeContext() [3/4]

QDeclarativeContext::QDeclarativeContext ( QDeclarativeContextData data)
private
Warning
This function is not part of the public interface.

Definition at line 204 of file qdeclarativecontext.cpp.

206 {
208  d->data = data;
209 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
static const char * data(const QByteArray &arr)
Q_INVOKABLE QObject(QObject *parent=0)
Constructs an object with parent object parent.
Definition: qobject.cpp:753
The QDeclarativeContext class defines a context within a QML engine.

◆ QDeclarativeContext() [4/4]

QDeclarativeContext::QDeclarativeContext ( QDeclarativeEngine e,
bool   
)
private
Warning
This function is not part of the public interface.

Definition at line 166 of file qdeclarativecontext.cpp.

168 {
170  d->data = new QDeclarativeContextData(this);
171 
172  d->data->engine = e;
173 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
friend class QDeclarativeContextData
Q_INVOKABLE QObject(QObject *parent=0)
Constructs an object with parent object parent.
Definition: qobject.cpp:753
The QDeclarativeContext class defines a context within a QML engine.

Functions

◆ baseUrl()

QUrl QDeclarativeContext::baseUrl ( ) const

Returns the base url of the component, or the containing component if none is set.

Definition at line 463 of file qdeclarativecontext.cpp.

Referenced by setBaseUrl().

464 {
465  Q_D(const QDeclarativeContext);
466  const QDeclarativeContextData* data = d->data;
467  while (data && data->url.isEmpty())
468  data = data->parent;
469 
470  if (data)
471  return data->url;
472  else
473  return QUrl();
474 }
double d
Definition: qnumeric_p.h:62
bool isEmpty() const
Returns true if the URL has no data; otherwise returns false.
Definition: qurl.cpp:4317
The QUrl class provides a convenient interface for working with URLs.
Definition: qurl.h:61
QDeclarativeContextData * parent
#define Q_D(Class)
Definition: qglobal.h:2482
static const char * data(const QByteArray &arr)
if(void) toggleToolbarShown
The QDeclarativeContext class defines a context within a QML engine.

◆ contextObject()

QObject * QDeclarativeContext::contextObject ( ) const

Return the context object, or 0 if there is no context object.

Definition at line 261 of file qdeclarativecontext.cpp.

262 {
263  Q_D(const QDeclarativeContext);
264  return d->data->contextObject;
265 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QDeclarativeContext class defines a context within a QML engine.

◆ contextProperty()

QVariant QDeclarativeContext::contextProperty ( const QString name) const

Returns the value of the name property for this context as a QVariant.

Definition at line 374 of file qdeclarativecontext.cpp.

Referenced by QDeclarativeContextPrivate::context_at(), QDeclarativeContextPrivate::context_count(), contextProperty(), and QDeclarativeVisualDataModel::indexOf().

375 {
376  Q_D(const QDeclarativeContext);
377  QVariant value;
378  int idx = -1;
379 
380  QDeclarativeContextData *data = d->data;
381 
382  if (data->propertyNames)
383  idx = data->propertyNames->value(name);
384 
385  if (idx == -1) {
386  QByteArray utf8Name = name.toUtf8();
387  if (data->contextObject) {
388  QObject *obj = data->contextObject;
391  QDeclarativePropertyCache::property(data->engine, obj, name, local);
392 
393  if (property) value = obj->metaObject()->property(property->coreIndex).read(obj);
394  }
395  if (!value.isValid() && parentContext())
396  value = parentContext()->contextProperty(name);
397  } else {
398  if (idx >= d->propertyValues.count())
399  value = QVariant::fromValue(data->idValues[idx - d->propertyValues.count()].data());
400  else
401  value = d->propertyValues[idx];
402  }
403 
404  return value;
405 }
The QVariant class acts like a union for the most common Qt data types.
Definition: qvariant.h:92
double d
Definition: qnumeric_p.h:62
QDeclarativeEngine * engine
QByteArray toUtf8() const Q_REQUIRED_RESULT
Returns a UTF-8 representation of the string as a QByteArray.
Definition: qstring.cpp:4074
The QByteArray class provides an array of bytes.
Definition: qbytearray.h:135
QDeclarativeContext * parentContext() const
Return the context&#39;s parent QDeclarativeContext, or 0 if this context has no parent or if the parent ...
The QObject class is the base class of all Qt objects.
Definition: qobject.h:111
#define Q_D(Class)
Definition: qglobal.h:2482
Data * property(const QScriptDeclarativeClass::Identifier &id) const
static const char * data(const QByteArray &arr)
QVariant contextProperty(const QString &) const
Returns the value of the name property for this context as a QVariant.
static QVariant fromValue(const T &value)
Returns a QVariant containing a copy of value.
Definition: qvariant.h:336
QDeclarativeIntegerCache * propertyNames
QVariant read(const QObject *obj) const
Reads the property&#39;s value from the given object.
The QDeclarativeContext class defines a context within a QML engine.
QVariant property(const char *name) const
Returns the value of the object&#39;s name property.
Definition: qobject.cpp:3807
bool isValid() const
Returns true if the storage type of this variant is not QVariant::Invalid; otherwise returns false...
Definition: qvariant.h:485
virtual const QMetaObject * metaObject() const
Returns a pointer to the meta-object of this object.
QMetaProperty property(int index) const
Returns the meta-data for the property with the given index.

◆ engine()

QDeclarativeEngine * QDeclarativeContext::engine ( ) const

Return the context's QDeclarativeEngine, or 0 if the context has no QDeclarativeEngine or the QDeclarativeEngine was destroyed.

Definition at line 242 of file qdeclarativecontext.cpp.

Referenced by QDeclarativeQtScriptExpression::eval(), QTextDocumentWithImageResources::loadResource(), QDeclarativeProperty::QDeclarativeProperty(), qmlEngine(), QDeclarativeXmlListModel::reload(), QDeclarativeContextData::resolvedUrl(), QDeclarativeExpressionPrivate::scriptValue(), and QDeclarativeEngineDebugService::setMethodBody().

243 {
244  Q_D(const QDeclarativeContext);
245  return d->data->engine;
246 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QDeclarativeContext class defines a context within a QML engine.

◆ isValid()

bool QDeclarativeContext::isValid ( ) const

Returns whether the context is valid.

To be valid, a context must have a engine, and it's contextObject(), if any, must not have been deleted.

Definition at line 232 of file qdeclarativecontext.cpp.

Referenced by setContextObject(), and setContextProperty().

233 {
234  Q_D(const QDeclarativeContext);
235  return d->data && d->data->isValid();
236 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QDeclarativeContext class defines a context within a QML engine.

◆ parentContext()

QDeclarativeContext * QDeclarativeContext::parentContext ( ) const

Return the context's parent QDeclarativeContext, or 0 if this context has no parent or if the parent has been destroyed.

Definition at line 252 of file qdeclarativecontext.cpp.

Referenced by contextProperty(), and QDeclarativeListViewPrivate::createSection().

253 {
254  Q_D(const QDeclarativeContext);
255  return d->data->parent?d->data->parent->asQDeclarativeContext():0;
256 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QDeclarativeContext class defines a context within a QML engine.

◆ resolvedUrl()

QUrl QDeclarativeContext::resolvedUrl ( const QUrl src)

Resolves the URL src relative to the URL of the containing component.

See also
QDeclarativeEngine::baseUrl(), setBaseUrl()

Definition at line 413 of file qdeclarativecontext.cpp.

Referenced by QTextDocumentWithImageResources::loadResource(), and QDeclarativeFontLoader::setSource().

414 {
416  return d->data->resolvedUrl(src);
417 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QDeclarativeContext class defines a context within a QML engine.

◆ setBaseUrl()

void QDeclarativeContext::setBaseUrl ( const QUrl baseUrl)

Explicitly sets the url resolvedUrl() will use for relative references to baseUrl.

Calling this function will override the url of the containing component used by default.

See also
resolvedUrl()

Definition at line 452 of file qdeclarativecontext.cpp.

453 {
455 
456  d->data->url = baseUrl;
457 }
double d
Definition: qnumeric_p.h:62
QUrl baseUrl() const
Returns the base url of the component, or the containing component if none is set.
#define Q_D(Class)
Definition: qglobal.h:2482
The QDeclarativeContext class defines a context within a QML engine.

◆ setContextObject()

void QDeclarativeContext::setContextObject ( QObject object)

Set the context object.

Definition at line 270 of file qdeclarativecontext.cpp.

Referenced by QDeclarativeLoaderPrivate::_q_sourceLoaded(), and QDeclarativeVisualDataModel::item().

271 {
273 
274  QDeclarativeContextData *data = d->data;
275 
276  if (data->isInternal) {
277  qWarning("QDeclarativeContext: Cannot set context object for internal context.");
278  return;
279  }
280 
281  if (!isValid()) {
282  qWarning("QDeclarativeContext: Cannot set context object on invalid context.");
283  return;
284  }
285 
286  data->contextObject = object;
287 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
Q_CORE_EXPORT void qWarning(const char *,...)
static const char * data(const QByteArray &arr)
bool isValid() const
Returns whether the context is valid.
The QDeclarativeContext class defines a context within a QML engine.

◆ setContextProperty() [1/2]

void QDeclarativeContext::setContextProperty ( const QString name,
QObject value 
)

Set the value of the name property on this context.

QDeclarativeContext does not take ownership of value.

Definition at line 338 of file qdeclarativecontext.cpp.

Referenced by QDeclarativeListViewPrivate::createSection(), QDeclarativeVisualDataModel::item(), and setContextProperty().

339 {
341  if (d->notifyIndex == -1)
342  d->notifyIndex = this->metaObject()->methodCount();
343 
344  QDeclarativeContextData *data = d->data;
345 
346  if (data->isInternal) {
347  qWarning("QDeclarativeContext: Cannot set property on internal context.");
348  return;
349  }
350 
351  if (!isValid()) {
352  qWarning("QDeclarativeContext: Cannot set property on invalid context.");
353  return;
354  }
355 
356  if (!data->propertyNames) data->propertyNames = new QDeclarativeIntegerCache(data->engine);
357  int idx = data->propertyNames->value(name);
358 
359  if (idx == -1) {
360  data->propertyNames->add(name, data->idValueCount + d->propertyValues.count());
361  d->propertyValues.append(QVariant::fromValue(value));
362 
363  data->refreshExpressions();
364  } else {
365  d->propertyValues[idx] = QVariant::fromValue(value);
366  QMetaObject::activate(this, idx + d->notifyIndex, 0);
367  }
368 }
double d
Definition: qnumeric_p.h:62
QDeclarativeEngine * engine
#define Q_D(Class)
Definition: qglobal.h:2482
Q_CORE_EXPORT void qWarning(const char *,...)
static const char * data(const QByteArray &arr)
static QVariant fromValue(const T &value)
Returns a QVariant containing a copy of value.
Definition: qvariant.h:336
QDeclarativeIntegerCache * propertyNames
bool isValid() const
Returns whether the context is valid.
static void activate(QObject *sender, int signal_index, void **argv)
Definition: qobject.cpp:3690
void add(const QString &, int)
The QDeclarativeContext class defines a context within a QML engine.
int methodCount() const
Returns the number of methods known to the meta-object system in this class, including the number of ...
virtual const QMetaObject * metaObject() const
Returns a pointer to the meta-object of this object.

◆ setContextProperty() [2/2]

void QDeclarativeContext::setContextProperty ( const QString name,
const QVariant value 
)

Set a the value of the name property on this context.

Definition at line 292 of file qdeclarativecontext.cpp.

293 {
295  if (d->notifyIndex == -1)
296  d->notifyIndex = this->metaObject()->methodCount();
297 
298  QDeclarativeContextData *data = d->data;
299 
300  if (data->isInternal) {
301  qWarning("QDeclarativeContext: Cannot set property on internal context.");
302  return;
303  }
304 
305  if (!isValid()) {
306  qWarning("QDeclarativeContext: Cannot set property on invalid context.");
307  return;
308  }
309 
310  if (data->engine) {
311  bool ok;
312  QObject *o = QDeclarativeEnginePrivate::get(data->engine)->toQObject(value, &ok);
313  if (ok) {
314  setContextProperty(name, o);
315  return;
316  }
317  }
318 
319  if (!data->propertyNames) data->propertyNames = new QDeclarativeIntegerCache(data->engine);
320 
321  int idx = data->propertyNames->value(name);
322  if (idx == -1) {
323  data->propertyNames->add(name, data->idValueCount + d->propertyValues.count());
324  d->propertyValues.append(value);
325 
326  data->refreshExpressions();
327  } else {
328  d->propertyValues[idx] = value;
329  QMetaObject::activate(this, idx + d->notifyIndex, 0);
330  }
331 }
double d
Definition: qnumeric_p.h:62
QDeclarativeEngine * engine
The QObject class is the base class of all Qt objects.
Definition: qobject.h:111
#define Q_D(Class)
Definition: qglobal.h:2482
static QDeclarativeEnginePrivate * get(QDeclarativeEngine *e)
Q_CORE_EXPORT void qWarning(const char *,...)
static const char * data(const QByteArray &arr)
QDeclarativeIntegerCache * propertyNames
void setContextProperty(const QString &, QObject *)
Set the value of the name property on this context.
bool isValid() const
Returns whether the context is valid.
static void activate(QObject *sender, int signal_index, void **argv)
Definition: qobject.cpp:3690
void add(const QString &, int)
The QDeclarativeContext class defines a context within a QML engine.
QObject * toQObject(const QVariant &, bool *ok=0) const
int methodCount() const
Returns the number of methods known to the meta-object system in this class, including the number of ...
virtual const QMetaObject * metaObject() const
Returns a pointer to the meta-object of this object.

Friends and Related Functions

◆ QDeclarativeBoundSignalProxy

friend class QDeclarativeBoundSignalProxy
friend

Definition at line 102 of file qdeclarativecontext.h.

◆ QDeclarativeComponent

Definition at line 99 of file qdeclarativecontext.h.

◆ QDeclarativeComponentPrivate

Definition at line 100 of file qdeclarativecontext.h.

◆ QDeclarativeContextData

Definition at line 103 of file qdeclarativecontext.h.

Referenced by QDeclarativeContext().

◆ QDeclarativeContextScriptClass

Definition at line 97 of file qdeclarativecontext.h.

◆ QDeclarativeEngine

friend class QDeclarativeEngine
friend

Definition at line 93 of file qdeclarativecontext.h.

◆ QDeclarativeEnginePrivate

Definition at line 94 of file qdeclarativecontext.h.

◆ QDeclarativeExpression

Definition at line 95 of file qdeclarativecontext.h.

◆ QDeclarativeExpressionPrivate

Definition at line 96 of file qdeclarativecontext.h.

◆ QDeclarativeObjectScriptClass

Definition at line 98 of file qdeclarativecontext.h.

◆ QDeclarativeScriptPrivate

friend class QDeclarativeScriptPrivate
friend

Definition at line 101 of file qdeclarativecontext.h.

◆ QDeclarativeVME

friend class QDeclarativeVME
friend

Definition at line 92 of file qdeclarativecontext.h.


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