Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QQmlBind Class Reference

#include <qqmlbind_p.h>

+ Inheritance diagram for QQmlBind:
+ Collaboration diagram for QQmlBind:

Public Types

enum  RestorationMode { RestoreNone = 0x0 , RestoreBinding = 0x1 , RestoreValue = 0x2 , RestoreBindingOrValue = RestoreBinding | RestoreValue }
 

Signals

void restoreModeChanged ()
 
- Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
 
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.
 

Public Member Functions

 QQmlBind (QObject *parent=nullptr)
 
bool when () const
 \qmlproperty bool QtQml::Binding::when
 
void setWhen (bool)
 
QObjectobject ()
 \qmlproperty QtObject QtQml::Binding::target
 
void setObject (QObject *)
 
QString property () const
 \qmlproperty string QtQml::Binding::property
 
void setProperty (const QString &)
 
QVariant value () const
 \qmlproperty var QtQml::Binding::value
 
void setValue (const QVariant &)
 
bool delayed () const
 \qmlproperty bool QtQml::Binding::delayed
 
void setDelayed (bool)
 
RestorationMode restoreMode () const
 \qmlproperty enumeration QtQml::Binding::restoreMode
 
void setRestoreMode (RestorationMode)
 
- Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
 
virtual bool event (QEvent *event)
 This virtual function receives events to an object and should return true if the event e was recognized and processed.
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
 
QString objectName () const
 
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
 
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QBindable< QStringbindableObjectName ()
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
 
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
 
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
 
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
 
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
 
QThreadthread () const
 Returns the thread in which the object lives.
 
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
 
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
 
int startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
 
void killTimer (int id)
 Kills the timer with timer identifier, id.
 
void killTimer (Qt::TimerId id)
 
template<typename T >
findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
 
template<typename T >
QList< T > findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) 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.
 
template<typename T >
findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<typename T >
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const QObjectListchildren () const
 Returns a list of child objects.
 
void setParent (QObject *parent)
 Makes the object a child of parent.
 
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
 
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
 
bool disconnect (const QObject *receiver, const char *member=nullptr) const
 
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
 
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
 
bool setProperty (const char *name, QVariant &&value)
 
QVariant property (const char *name) const
 Returns the value of the object's name property.
 
QList< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () const
 Returns a pointer to the parent object.
 
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.
 
- Public Member Functions inherited from QQmlPropertyValueSource
 QQmlPropertyValueSource ()
 Constructs a QQmlPropertyValueSource.
 
virtual ~QQmlPropertyValueSource ()
 Destroys the value source.
 
- Public Member Functions inherited from QQmlParserStatus
 QQmlParserStatus ()
 
virtual ~QQmlParserStatus ()
 

Protected Member Functions

void setTarget (const QQmlProperty &) override
 Set the target property for the value source.
 
void classBegin () override
 Invoked after class creation, but before any properties have been set.
 
void componentComplete () override
 Invoked after the root component that caused this instantiation has completed construction.
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
 
virtual void childEvent (QChildEvent *event)
 This event handler can be reimplemented in a subclass to receive child events.
 
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
 

Properties

QObjecttarget
 
QString property
 
QVariant value
 
bool when
 
bool delayed
 
RestorationMode restoreMode
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 
- Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
 
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
 
template<typename Func1 , typename Func2 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
 
template<typename Func1 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 

Detailed Description

Definition at line 26 of file qqmlbind_p.h.

Member Enumeration Documentation

◆ RestorationMode

Enumerator
RestoreNone 
RestoreBinding 
RestoreValue 
RestoreBindingOrValue 

Definition at line 29 of file qqmlbind_p.h.

Constructor & Destructor Documentation

◆ QQmlBind()

QQmlBind::QQmlBind ( QObject * parent = nullptr)
\qmltype Binding
\instantiates QQmlBind
\inqmlmodule QtQml
\ingroup qtquick-interceptors
\brief Enables the arbitrary creation of property bindings.

In QML, property bindings result in a dependency between the properties of
different objects.

\section1 Binding to an Inaccessible Property

Sometimes it is necessary to bind an object's property to
that of another object that isn't directly instantiated by QML, such as a
property of a class exported to QML by C++. You can use the Binding type
to establish this dependency; binding any value to any object's property.

For example, in a C++ application that maps an "app.enteredText" property
into QML, you can use Binding to update the enteredText property.

\qml
TextEdit { id: myTextField; text: "Please type here..." }
Binding { app.enteredText: myTextField.text }
\endqml

When \c{text} changes, the C++ property \c{enteredText} will update
automatically.

\section1 Conditional Bindings

In some cases you may want to modify the value of a property when a certain
condition is met but leave it unmodified otherwise. Often, it's not possible
to do this with direct bindings, as you have to supply values for all
possible branches.

For example, the code snippet below results in a warning whenever you
release the mouse. This is because the value of the binding is undefined
when the mouse isn't pressed.

\qml

produces warning: "Unable to assign [undefined] to double value" value: if (mouse.pressed) mouse.mouseX \endqml

The Binding type can prevent this warning.

\qml Binding on value { when: mouse.pressed value: mouse.mouseX } \endqml

The Binding type restores any previously set direct bindings on the property.

See also
{Qt Qml}

Definition at line 389 of file qqmlbind.cpp.

Member Function Documentation

◆ classBegin()

void QQmlBind::classBegin ( )
overrideprotectedvirtual

Invoked after class creation, but before any properties have been set.

Implements QQmlParserStatus.

Definition at line 704 of file qqmlbind.cpp.

References d.

◆ componentComplete()

void QQmlBind::componentComplete ( )
overrideprotectedvirtual

Invoked after the root component that caused this instantiation has completed construction.

At this point all static values and binding values have been assigned to the class.

Implements QQmlParserStatus.

Definition at line 976 of file qqmlbind.cpp.

References d, and qmlContext().

+ Here is the call graph for this function:

◆ delayed()

bool QQmlBind::delayed ( ) const

\qmlproperty bool QtQml::Binding::delayed

Since
5.8

This property holds whether the binding should be delayed.

A delayed binding will not immediately update the target, but rather wait until the event queue has been cleared. This can be used as an optimization, or to prevent intermediary values from being assigned.

contactName.text.value: givenName + " " + familyName
when: list.ListView.isCurrentItem
delayed: true
}
bool when
Definition qqmlbind_p.h:44
bool delayed
Definition qqmlbind_p.h:45
QList< int > list
[14]
Note
Using the \l delayed property incurs a run time cost as the Binding element has to create a proxy for the value, so that it can delay its application to the actual target. When using the \l target and \l property properties, this cost is lower because the \l value property can be re-used as proxy. When using the form shown above, Binding will allocate a separate object with a dynamic meta-object to hold the proxy values.

Definition at line 599 of file qqmlbind.cpp.

References d.

◆ object()

QObject * QQmlBind::object ( )

\qmlproperty QtObject QtQml::Binding::target

The object to be updated. You need to use this property if the binding target does not have an id attribute (for example, when the target is a singleton). Otherwise, the following two pieces of code are equivalent:

\qml Binding { contactName.text: name } \endqml

\qml Binding { target: contactName property: "text" value: name } \endqml

The former one is much more compact, but you cannot replace the target object or property at run time. With the latter one you can.

Definition at line 452 of file qqmlbind.cpp.

References d.

◆ property()

QString QQmlBind::property ( ) const

\qmlproperty string QtQml::Binding::property

The property to be updated.

This can be a group property if the expression results in accessing a property of a \l {QML Value Types}{value type}. For example:

\qml Item { id: item

property rect rectangle: Qt.rect(0, 0, 200, 200) }

Binding { target: item property: "rectangle.x" value: 100 } \endqml

You only need to use this property if you can't supply the binding target declaratively. The following snippet of code is equivalent to the above binding, but more compact:

\qml Binding { item.rectangle.x: 100 } \endqml

Definition at line 522 of file qqmlbind.cpp.

References d.

◆ restoreMode()

QQmlBind::RestorationMode QQmlBind::restoreMode ( ) const

\qmlproperty enumeration QtQml::Binding::restoreMode

Since
5.14

This property can be used to describe if and how the original value should be restored when the binding is disabled.

The possible values are:

\value Binding.RestoreNone The original value is not restored at all \value Binding.RestoreBinding The original value is restored if it was another binding. In that case the old binding is in effect again. \value Binding.RestoreValue The original value is restored if it was a plain value rather than a binding. \value Binding.RestoreBindingOrValue The original value is always restored.

The default value is Binding.RestoreBindingOrValue.

Note
This property exists for backwards compatibility with earlier versions of Qt. Don't use it in new code.

Definition at line 660 of file qqmlbind.cpp.

References d, RestoreBinding, RestoreNone, and RestoreValue.

◆ restoreModeChanged

void QQmlBind::restoreModeChanged ( )
signal

Referenced by setRestoreMode().

+ Here is the caller graph for this function:

◆ setDelayed()

void QQmlBind::setDelayed ( bool delayed)

Definition at line 605 of file qqmlbind.cpp.

References Binding, d, delayed, i, QQmlBindEntry::previousKind, and QQmlAnyBinding::removeBindingFrom().

+ Here is the call graph for this function:

◆ setObject()

void QQmlBind::setObject ( QObject * obj)

Definition at line 458 of file qqmlbind.cpp.

References d, QQmlBinding::evaluate(), QQmlJavaScriptExpression::hasValidContext(), QQmlAnyBinding::ofProperty(), qmlContext(), setTarget(), and when.

+ Here is the call graph for this function:

◆ setProperty()

void QQmlBind::setProperty ( const QString & p)

Definition at line 528 of file qqmlbind.cpp.

References d, qmlContext(), and setTarget().

+ Here is the call graph for this function:

◆ setRestoreMode()

void QQmlBind::setRestoreMode ( RestorationMode newMode)

Definition at line 671 of file qqmlbind.cpp.

References d, emit, RestoreBinding, restoreMode, restoreModeChanged(), and RestoreValue.

+ Here is the call graph for this function:

◆ setTarget()

void QQmlBind::setTarget ( const QQmlProperty & property)
overrideprotectedvirtual

Set the target property for the value source.

This method will be called by the QML engine when assigning a value source.

Implements QQmlPropertyValueSource.

Definition at line 681 of file qqmlbind.cpp.

References d.

Referenced by setObject(), and setProperty().

+ Here is the caller graph for this function:

◆ setValue()

void QQmlBind::setValue ( const QVariant & v)

Definition at line 565 of file qqmlbind.cpp.

References QQmlBindEntry::current, QQmlBindEntry::currentKind, d, and QQmlBindEntryContent::set().

+ Here is the call graph for this function:

◆ setWhen()

void QQmlBind::setWhen ( bool v)

Definition at line 418 of file qqmlbind.cpp.

References d.

◆ value()

QVariant QQmlBind::value ( ) const

\qmlproperty var QtQml::Binding::value

The value to be set on the target object and property. This can be a constant (which isn't very useful), or a bound expression.

You only need to use this property if you can't supply the binding target declaratively. Otherwise you can directly bind to the target.

Definition at line 556 of file qqmlbind.cpp.

References d, Q_ASSERT, and Variant.

◆ when()

bool QQmlBind::when ( ) const

\qmlproperty bool QtQml::Binding::when

This property holds when the binding is active. This should be set to an expression that evaluates to true when you want the binding to be active.

\qml Binding { contactName.text: name when: list.ListView.isCurrentItem } \endqml

By default, any binding or value that was set perviously is restored when the binding becomes inactive. You can customize the restoration behavior using the \l restoreMode property.

See also
restoreMode

Definition at line 412 of file qqmlbind.cpp.

References d.

Property Documentation

◆ delayed

bool QQmlBind::delayed
readwrite

Definition at line 45 of file qqmlbind_p.h.

Referenced by setDelayed().

◆ property

QString QQmlBind::property
readwrite

Definition at line 42 of file qqmlbind_p.h.

◆ restoreMode

RestorationMode QQmlBind::restoreMode
readwrite

Definition at line 46 of file qqmlbind_p.h.

Referenced by setRestoreMode().

◆ target

QObject * QQmlBind::target
readwrite

Definition at line 41 of file qqmlbind_p.h.

◆ value

QVariant QQmlBind::value
readwrite

Definition at line 43 of file qqmlbind_p.h.

◆ when

bool QQmlBind::when
readwrite

Definition at line 44 of file qqmlbind_p.h.

Referenced by setObject().


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