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
QQuickWorkerScript Class Reference

#include <qquickworkerscript_p.h>

+ Inheritance diagram for QQuickWorkerScript:
+ Collaboration diagram for QQuickWorkerScript:

Public Slots

void sendMessage (QQmlV4FunctionPtr)
 \qmlmethod WorkerScript::sendMessage(jsobject message)
 
- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 

Signals

void sourceChanged ()
 
 Q_REVISION (2, 15) void readyChanged()
 
void message (const QJSValue &messageObject)
 
- 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

 QQuickWorkerScript (QObject *parent=nullptr)
 \qmltype WorkerScript \instantiates QQuickWorkerScript\inqmlmodule QtQml.WorkerScript
 
 ~QQuickWorkerScript ()
 
QUrl source () const
 \qmlproperty url WorkerScript::source
 
void setSource (const QUrl &)
 
bool ready () const
 \qmlproperty bool WorkerScript::ready
 
- 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 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 QQmlParserStatus
 QQmlParserStatus ()
 
virtual ~QQmlParserStatus ()
 

Protected Member Functions

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.
 
bool event (QEvent *) override
 \qmlsignal WorkerScript::message(jsobject msg)
 
- 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

QUrl source
 
bool ready
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Additional Inherited Members

- 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 50 of file qquickworkerscript_p.h.

Constructor & Destructor Documentation

◆ QQuickWorkerScript()

QQuickWorkerScript::QQuickWorkerScript ( QObject * parent = nullptr)

\qmltype WorkerScript \instantiates QQuickWorkerScript\inqmlmodule QtQml.WorkerScript

Enables the use of threads in a Qt Quick application.

Use WorkerScript to run operations in a new thread. This is useful for running operations in the background so that the main GUI thread is not blocked.

Messages can be passed between the new thread and the parent thread using \l sendMessage() and the onMessage() handler.

An example:

import QtQuick
Rectangle {
width: 300; height: 300
Text {
id: myText
text: 'Click anywhere'
}
WorkerScript {
id: myWorker
source: "script.mjs"
onMessage: (messageObject)=> myText.text = messageObject.reply
}
MouseArea {
anchors.fill: parent
onClicked: (mouse)=> myWorker.sendMessage({ 'x': mouse.x, 'y': mouse.y })
}
}

The above worker script specifies a JavaScript file, "script.mjs", that handles the operations to be performed in the new thread. Here is script.mjs:

\quotefile qml/workerscript/script.mjs

When the user clicks anywhere within the rectangle, sendMessage() is called, triggering the \tt WorkerScript.onMessage() handler in \tt script.mjs. This in turn sends a reply message that is then received by the \tt onMessage() handler of \tt myWorker.

The example uses a script that is an ECMAScript module, because it has the ".mjs" extension. It can use import statements to access functionality from other modules and it is run in JavaScript strict mode.

If a worker script has the extension ".js" instead, then it is considered to contain plain JavaScript statements and it is run in non-strict mode.

Note
Each WorkerScript element will instantiate a separate JavaScript engine to ensure perfect isolation and thread-safety. If the impact of that results in a memory consumption that is too high for your environment, then consider sharing a WorkerScript element.

Definition at line 512 of file qquickworkerscript.cpp.

◆ ~QQuickWorkerScript()

QQuickWorkerScript::~QQuickWorkerScript ( )

Definition at line 517 of file qquickworkerscript.cpp.

References QQuickWorkerScriptEngine::removeWorkerScript().

+ Here is the call graph for this function:

Member Function Documentation

◆ classBegin()

void QQuickWorkerScript::classBegin ( )
overrideprotectedvirtual

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

Implements QQmlParserStatus.

Definition at line 598 of file qquickworkerscript.cpp.

◆ componentComplete()

void QQuickWorkerScript::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 631 of file qquickworkerscript.cpp.

References engine.

◆ event()

bool QQuickWorkerScript::event ( QEvent * event)
overrideprotectedvirtual

\qmlsignal WorkerScript::message(jsobject msg)

This signal is emitted when a message msg is received from a worker script in another thread through a call to sendMessage().

Reimplemented from QObject.

Definition at line 644 of file qquickworkerscript.cpp.

References QV4::Serialize::deserialize(), emit, engine, QObject::event(), QJSValuePrivate::fromReturnedValue(), QJSEngine::handle(), qmlEngine(), QQmlEnginePrivate::warning(), WorkerDataEvent::WorkerData, and WorkerErrorEvent::WorkerError.

+ Here is the call graph for this function:

◆ message

void QQuickWorkerScript::message ( const QJSValue & messageObject)
signal

◆ Q_REVISION

QQuickWorkerScript::Q_REVISION ( 2 ,
15  )
signal

◆ ready()

bool QQuickWorkerScript::ready ( ) const

\qmlproperty bool WorkerScript::ready

This holds whether the WorkerScript has been initialized and is ready for receiving messages via \tt WorkerScript.sendMessage().

Definition at line 558 of file qquickworkerscript.cpp.

◆ sendMessage

void QQuickWorkerScript::sendMessage ( QQmlV4FunctionPtr args)
slot

\qmlmethod WorkerScript::sendMessage(jsobject message)

Sends the given message to a worker script handler in another thread. The other worker script handler can receive this message through the onMessage() handler.

The message object may only contain values of the following types:

\list

  • boolean, number, string
  • JavaScript objects and arrays
  • ListModel objects (any other type of QObject* is not allowed) \endlist

All objects and arrays are copied to the message. With the exception of ListModel objects, any modifications by the other thread to an object passed in message will not be reflected in the original object.

Definition at line 583 of file qquickworkerscript.cpp.

References args, argument, engine, QV4::Scope::engine, QList< T >::length(), qWarning, QQuickWorkerScriptEngine::sendMessage(), QV4::Serialize::serialize(), and QV4::Value::undefinedValue().

+ Here is the call graph for this function:

◆ setSource()

void QQuickWorkerScript::setSource ( const QUrl & source)

Definition at line 537 of file qquickworkerscript.cpp.

References context, emit, engine, QQuickWorkerScriptEngine::executeUrl(), qmlContext(), source, and sourceChanged().

+ Here is the call graph for this function:

◆ source()

QUrl QQuickWorkerScript::source ( ) const

\qmlproperty url WorkerScript::source

This holds the url of the JavaScript file that implements the \tt WorkerScript.onMessage() handler for threaded operations.

If the file name component of the url ends with ".mjs", then the script is parsed as an ECMAScript module and run in strict mode. Otherwise it is considered to be plain script.

Definition at line 532 of file qquickworkerscript.cpp.

◆ sourceChanged

void QQuickWorkerScript::sourceChanged ( )
signal

Referenced by setSource().

+ Here is the caller graph for this function:

Property Documentation

◆ ready

bool QQuickWorkerScript::ready
read

Definition at line 55 of file qquickworkerscript_p.h.

◆ source

QUrl QQuickWorkerScript::source
readwrite

Definition at line 54 of file qquickworkerscript_p.h.

Referenced by setSource().


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