[][src]Struct qt_qml::QJSEngine

#[repr(C)]pub struct QJSEngine { /* fields omitted */ }

C++ class: QJSEngine.

C++ documentation:

Methods

impl QJSEngine[src]

pub unsafe fn collect_garbage(&self)[src]

Runs the garbage collector.

Calls C++ function: void QJSEngine::collectGarbage().

C++ documentation:

Runs the garbage collector.

The garbage collector will attempt to reclaim memory by locating and disposing of objects that are no longer reachable in the script environment.

Normally you don't need to call this function; the garbage collector will automatically be invoked when the QJSEngine decides that it's wise to do so (i.e. when a certain number of new objects have been created). However, you can call this function to explicitly request that garbage collection should be performed as soon as possible.

pub unsafe fn evaluate_3a(
    &self,
    program: impl CastInto<Ref<QString>>,
    file_name: impl CastInto<Ref<QString>>,
    line_number: c_int
) -> CppBox<QJSValue>
[src]

Evaluates program, using lineNumber as the base line number, and returns the result of the evaluation.

Calls C++ function: QJSValue QJSEngine::evaluate(const QString& program, const QString& fileName = …, int lineNumber = …).

C++ documentation:

Evaluates program, using lineNumber as the base line number, and returns the result of the evaluation.

The script code will be evaluated in the context of the global object.

The evaluation of program can cause an exception in the engine; in this case the return value will be the exception that was thrown (typically an Error object; see QJSValue::isError()).

lineNumber is used to specify a starting line number for program; line number information reported by the engine that pertains to this evaluation will be based on this argument. For example, if program consists of two lines of code, and the statement on the second line causes a script exception, the exception line number would be lineNumber plus one. When no starting line number is specified, line numbers will be 1-based.

fileName is used for error reporting. For example, in error objects the file name is accessible through the "fileName" property if it is provided with this function.

Note: If an exception was thrown and the exception value is not an Error instance (i.e., QJSValue::isError() returns false), the exception value will still be returned, but there is currently no API for detecting that an exception did occur in this case.

pub unsafe fn evaluate_2a(
    &self,
    program: impl CastInto<Ref<QString>>,
    file_name: impl CastInto<Ref<QString>>
) -> CppBox<QJSValue>
[src]

Evaluates program, using lineNumber as the base line number, and returns the result of the evaluation.

Calls C++ function: QJSValue QJSEngine::evaluate(const QString& program, const QString& fileName = …).

C++ documentation:

Evaluates program, using lineNumber as the base line number, and returns the result of the evaluation.

The script code will be evaluated in the context of the global object.

The evaluation of program can cause an exception in the engine; in this case the return value will be the exception that was thrown (typically an Error object; see QJSValue::isError()).

lineNumber is used to specify a starting line number for program; line number information reported by the engine that pertains to this evaluation will be based on this argument. For example, if program consists of two lines of code, and the statement on the second line causes a script exception, the exception line number would be lineNumber plus one. When no starting line number is specified, line numbers will be 1-based.

fileName is used for error reporting. For example, in error objects the file name is accessible through the "fileName" property if it is provided with this function.

Note: If an exception was thrown and the exception value is not an Error instance (i.e., QJSValue::isError() returns false), the exception value will still be returned, but there is currently no API for detecting that an exception did occur in this case.

pub unsafe fn evaluate_1a(
    &self,
    program: impl CastInto<Ref<QString>>
) -> CppBox<QJSValue>
[src]

Evaluates program, using lineNumber as the base line number, and returns the result of the evaluation.

Calls C++ function: QJSValue QJSEngine::evaluate(const QString& program).

C++ documentation:

Evaluates program, using lineNumber as the base line number, and returns the result of the evaluation.

The script code will be evaluated in the context of the global object.

The evaluation of program can cause an exception in the engine; in this case the return value will be the exception that was thrown (typically an Error object; see QJSValue::isError()).

lineNumber is used to specify a starting line number for program; line number information reported by the engine that pertains to this evaluation will be based on this argument. For example, if program consists of two lines of code, and the statement on the second line causes a script exception, the exception line number would be lineNumber plus one. When no starting line number is specified, line numbers will be 1-based.

fileName is used for error reporting. For example, in error objects the file name is accessible through the "fileName" property if it is provided with this function.

Note: If an exception was thrown and the exception value is not an Error instance (i.e., QJSValue::isError() returns false), the exception value will still be returned, but there is currently no API for detecting that an exception did occur in this case.

pub unsafe fn global_object(&self) -> CppBox<QJSValue>[src]

Returns this engine's Global Object.

Calls C++ function: QJSValue QJSEngine::globalObject() const.

C++ documentation:

Returns this engine's Global Object.

By default, the Global Object contains the built-in objects that are part of ECMA-262, such as Math, Date and String. Additionally, you can set properties of the Global Object to make your own extensions available to all script code. Non-local variables in script code will be created as properties of the Global Object, as well as local variables in global code.

pub unsafe fn import_module(
    &self,
    file_name: impl CastInto<Ref<QString>>
) -> CppBox<QJSValue>
[src]

This is supported on cpp_lib_version="5.13.0" or cpp_lib_version="5.12.2" or cpp_lib_version="5.14.0" only.

Imports the module located at fileName and returns a module namespace object that contains all exported variables, constants and functions as properties.

Calls C++ function: QJSValue QJSEngine::importModule(const QString& fileName).

C++ documentation:

Imports the module located at fileName and returns a module namespace object that contains all exported variables, constants and functions as properties.

If this is the first time the module is imported in the engine, the file is loaded from the specified location in either the local file system or the Qt resource system and evaluated as an ECMAScript module. The file is expected to be encoded in UTF-8 text.

Subsequent imports of the same module will return the previously imported instance. Modules are singletons and remain around until the engine is destroyed.

The specified fileName will internally be normalized using QFileInfo::canonicalFilePath(). That means that multiple imports of the same file on disk using different relative paths will load the file only once.

Note: If an exception is thrown during the loading of the module, the return value will be the exception (typically an Error object; see QJSValue::isError()).

This function was introduced in Qt 5.12.

pub unsafe fn install_extensions_2a(
    &self,
    extensions: QFlags<Extension>,
    object: impl CastInto<Ref<QJSValue>>
)
[src]

Installs JavaScript extensions to add functionality that is not available in a standard ECMAScript implementation.

Calls C++ function: void QJSEngine::installExtensions(QFlags<QJSEngine::Extension> extensions, const QJSValue& object = …).

C++ documentation:

Installs JavaScript extensions to add functionality that is not available in a standard ECMAScript implementation.

The extensions are installed on the given object, or on the Global Object if no object is specified.

Several extensions can be installed at once by OR-ing the enum values:

installExtensions(QJSEngine::TranslationExtension | QJSEngine::ConsoleExtension);

This function was introduced in Qt 5.6.

See also Extension.

pub unsafe fn install_extensions_1a(&self, extensions: QFlags<Extension>)[src]

Installs JavaScript extensions to add functionality that is not available in a standard ECMAScript implementation.

Calls C++ function: void QJSEngine::installExtensions(QFlags<QJSEngine::Extension> extensions).

C++ documentation:

Installs JavaScript extensions to add functionality that is not available in a standard ECMAScript implementation.

The extensions are installed on the given object, or on the Global Object if no object is specified.

Several extensions can be installed at once by OR-ing the enum values:

installExtensions(QJSEngine::TranslationExtension | QJSEngine::ConsoleExtension);

This function was introduced in Qt 5.6.

See also Extension.

pub unsafe fn install_translator_functions_1a(
    &self,
    object: impl CastInto<Ref<QJSValue>>
)
[src]

This function is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code.

Calls C++ function: void QJSEngine::installTranslatorFunctions(const QJSValue& object = …).

C++ documentation:

This function is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code.

Installs translator functions on the given object, or on the Global Object if no object is specified.

The relation between script translator functions and C++ translator functions is described in the following table:

Script FunctionCorresponding C++ Function
qsTr()QObject::tr()
QT_TR_NOOP()QT_TR_NOOP()
qsTranslate()QCoreApplication::translate()
QT_TRANSLATE_NOOP()QT_TRANSLATE_NOOP()
qsTrId()qtTrId()
QT_TRID_NOOP()QT_TRID_NOOP()

It also adds an arg() method to the string prototype.

This function was introduced in Qt 5.4.

See also Internationalization with Qt.

pub unsafe fn install_translator_functions_0a(&self)[src]

This function is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code.

Calls C++ function: void QJSEngine::installTranslatorFunctions().

C++ documentation:

This function is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code.

Installs translator functions on the given object, or on the Global Object if no object is specified.

The relation between script translator functions and C++ translator functions is described in the following table:

Script FunctionCorresponding C++ Function
qsTr()QObject::tr()
QT_TR_NOOP()QT_TR_NOOP()
qsTranslate()QCoreApplication::translate()
QT_TRANSLATE_NOOP()QT_TRANSLATE_NOOP()
qsTrId()qtTrId()
QT_TRID_NOOP()QT_TRID_NOOP()

It also adds an arg() method to the string prototype.

This function was introduced in Qt 5.4.

See also Internationalization with Qt.

pub unsafe fn is_interrupted(&self) -> bool[src]

This is supported on cpp_lib_version="5.14.0" only.

Returns whether JavaScript execution is currently interrupted.

Calls C++ function: bool QJSEngine::isInterrupted() const.

C++ documentation:

Returns whether JavaScript execution is currently interrupted.

This function was introduced in Qt 5.14.

See also setInterrupted().

pub unsafe fn meta_object(&self) -> Ptr<QMetaObject>[src]

Calls C++ function: virtual const QMetaObject* QJSEngine::metaObject() const.

pub unsafe fn new_0a() -> QBox<QJSEngine>[src]

Constructs a QJSEngine object.

Calls C++ function: [constructor] void QJSEngine::QJSEngine().

C++ documentation:

Constructs a QJSEngine object.

The globalObject() is initialized to have properties as described in ECMA-262, Section 15.1.

pub unsafe fn new_1a(parent: impl CastInto<Ptr<QObject>>) -> QBox<QJSEngine>[src]

Constructs a QJSEngine object with the given parent.

Calls C++ function: [constructor] void QJSEngine::QJSEngine(QObject* parent).

C++ documentation:

Constructs a QJSEngine object with the given parent.

The globalObject() is initialized to have properties as described in ECMA-262, Section 15.1.

pub unsafe fn new_array_1a(&self, length: c_uint) -> CppBox<QJSValue>[src]

Creates a JavaScript object of class Array with the given length.

Calls C++ function: QJSValue QJSEngine::newArray(unsigned int length = …).

C++ documentation:

Creates a JavaScript object of class Array with the given length.

See also newObject().

pub unsafe fn new_array_0a(&self) -> CppBox<QJSValue>[src]

Creates a JavaScript object of class Array with the given length.

Calls C++ function: QJSValue QJSEngine::newArray().

C++ documentation:

Creates a JavaScript object of class Array with the given length.

See also newObject().

pub unsafe fn new_error_object_2a(
    &self,
    error_type: ErrorType,
    message: impl CastInto<Ref<QString>>
) -> CppBox<QJSValue>
[src]

This is supported on cpp_lib_version="5.13.0" or cpp_lib_version="5.12.2" or cpp_lib_version="5.14.0" only.

Creates a JavaScript object of class Error.

Calls C++ function: QJSValue QJSEngine::newErrorObject(QJSValue::ErrorType errorType, const QString& message = …).

C++ documentation:

Creates a JavaScript object of class Error.

The prototype of the created object will be errorType.

This function was introduced in Qt 5.12.

See also newObject(), throwError(), and QJSValue::isError().

pub unsafe fn new_error_object_1a(
    &self,
    error_type: ErrorType
) -> CppBox<QJSValue>
[src]

This is supported on cpp_lib_version="5.13.0" or cpp_lib_version="5.12.2" or cpp_lib_version="5.14.0" only.

Creates a JavaScript object of class Error.

Calls C++ function: QJSValue QJSEngine::newErrorObject(QJSValue::ErrorType errorType).

C++ documentation:

Creates a JavaScript object of class Error.

The prototype of the created object will be errorType.

This function was introduced in Qt 5.12.

See also newObject(), throwError(), and QJSValue::isError().

pub unsafe fn new_object(&self) -> CppBox<QJSValue>[src]

Creates a JavaScript object of class Object.

Calls C++ function: QJSValue QJSEngine::newObject().

C++ documentation:

Creates a JavaScript object of class Object.

The prototype of the created object will be the Object prototype object.

See also newArray() and QJSValue::setProperty().

pub unsafe fn new_q_meta_object(
    &self,
    meta_object: impl CastInto<Ptr<QMetaObject>>
) -> CppBox<QJSValue>
[src]

Creates a JavaScript object that wraps the given QMetaObject The metaObject must outlive the script engine. It is recommended to only use this method with static metaobjects.

Calls C++ function: QJSValue QJSEngine::newQMetaObject(const QMetaObject* metaObject).

C++ documentation:

Creates a JavaScript object that wraps the given QMetaObject The metaObject must outlive the script engine. It is recommended to only use this method with static metaobjects.

When called as a constructor, a new instance of the class will be created. Only constructors exposed by Q_INVOKABLE will be visible from the script engine.

This function was introduced in Qt 5.8.

See also newQObject() and QObject Integration.

pub unsafe fn new_q_object(
    &self,
    object: impl CastInto<Ptr<QObject>>
) -> CppBox<QJSValue>
[src]

Creates a JavaScript object that wraps the given QObject object, using JavaScriptOwnership.

Calls C++ function: QJSValue QJSEngine::newQObject(QObject* object).

C++ documentation:

Creates a JavaScript object that wraps the given QObject object, using JavaScriptOwnership.

Signals and slots, properties and children of object are available as properties of the created QJSValue.

If object is a null pointer, this function returns a null value.

If a default prototype has been registered for the object's class (or its superclass, recursively), the prototype of the new script object will be set to be that default prototype.

If the given object is deleted outside of the engine's control, any attempt to access the deleted QObject's members through the JavaScript wrapper object (either by script code or C++) will result in a script exception.

See also QJSValue::toQObject().

pub unsafe fn qt_metacall(
    &self,
    arg1: Call,
    arg2: c_int,
    arg3: *mut *mut c_void
) -> c_int
[src]

Calls C++ function: virtual int QJSEngine::qt_metacall(QMetaObject::Call arg1, int arg2, void** arg3).

pub unsafe fn qt_metacast(&self, arg1: *const c_char) -> *mut c_void[src]

Calls C++ function: virtual void* QJSEngine::qt_metacast(const char* arg1).

pub unsafe fn set_interrupted(&self, interrupted: bool)[src]

This is supported on cpp_lib_version="5.14.0" only.

Interrupts or re-enables JavaScript execution.

Calls C++ function: void QJSEngine::setInterrupted(bool interrupted).

C++ documentation:

Interrupts or re-enables JavaScript execution.

If interrupted is true, any JavaScript executed by this engine immediately aborts and returns an error object until this function is called again with a value of false for interrupted.

This function is thread safe. You may call it from a different thread in order to interrupt, for example, an infinite loop in JavaScript.

This function was introduced in Qt 5.14.

See also isInterrupted().

pub unsafe fn static_meta_object() -> Ref<QMetaObject>[src]

Returns a reference to the staticMetaObject field.

pub unsafe fn throw_error_q_string(&self, message: impl CastInto<Ref<QString>>)[src]

This is supported on cpp_lib_version="5.13.0" or cpp_lib_version="5.12.2" or cpp_lib_version="5.14.0" only.

Throws a run-time error (exception) with the given message.

Calls C++ function: void QJSEngine::throwError(const QString& message).

C++ documentation:

Throws a run-time error (exception) with the given message.

This method is the C++ counterpart of a throw() expression in JavaScript. It enables C++ code to report run-time errors to QJSEngine. Therefore it should only be called from C++ code that was invoked by a JavaScript function through QJSEngine.

When returning from C++, the engine will interrupt the normal flow of execution and call the the next pre-registered exception handler with an error object that contains the given message. The error object will point to the location of the top-most context on the JavaScript caller stack; specifically, it will have properties lineNumber, fileName and stack. These properties are described in Script Exceptions.

In the following example a C++ method in FileAccess.cpp throws an error in qmlFile.qml at the position where readFileAsText() is called:

// qmlFile.qml function someFunction() { ... var text = FileAccess.readFileAsText("/path/to/file.txt"); }

// FileAccess.cpp // Assuming that FileAccess is a QObject-derived class that has been // registered as a singleton type and provides an invokable method // readFileAsText()

QJSValue FileAccess::readFileAsText(const QString & filePath) { QFile file(filePath);

if (!file.open(QIODevice::ReadOnly)) { jsEngine->throwError(file.errorString()); return QString(); }

... return content; }

It is also possible to catch the thrown error in JavaScript:

// qmlFile.qml function someFunction() { ... var text; try { text = FileAccess.readFileAsText("/path/to/file.txt"); } catch (error) { console.warn("In " + error.fileName + ":" + "error.lineNumber" + ": " + error.message); } }

If you need a more specific run-time error to describe an exception, you can use the throwError(QJSValue::ErrorType errorType, const QString &message) overload.

This function was introduced in Qt 5.12.

See also Script Exceptions.

pub unsafe fn throw_error_error_type_q_string(
    &self,
    error_type: ErrorType,
    message: impl CastInto<Ref<QString>>
)
[src]

This is supported on cpp_lib_version="5.13.0" or cpp_lib_version="5.12.2" or cpp_lib_version="5.14.0" only.

This function overloads throwError().

Calls C++ function: void QJSEngine::throwError(QJSValue::ErrorType errorType, const QString& message = …).

C++ documentation:

This function overloads throwError().

Throws a run-time error (exception) with the given errorType and message.

// Assuming that DataEntry is a QObject-derived class that has been // registered as a singleton type and provides an invokable method // setAge().

void DataEntry::setAge(int age) { if (age < 0 || age > 200) { jsEngine->throwError(QJSValue::RangeError, "Age must be between 0 and 200"); } ... }

This function was introduced in Qt 5.12.

See also Script Exceptions and newErrorObject().

pub unsafe fn throw_error_error_type(&self, error_type: ErrorType)[src]

This is supported on cpp_lib_version="5.13.0" or cpp_lib_version="5.12.2" or cpp_lib_version="5.14.0" only.

This function overloads throwError().

Calls C++ function: void QJSEngine::throwError(QJSValue::ErrorType errorType).

C++ documentation:

This function overloads throwError().

Throws a run-time error (exception) with the given errorType and message.

// Assuming that DataEntry is a QObject-derived class that has been // registered as a singleton type and provides an invokable method // setAge().

void DataEntry::setAge(int age) { if (age < 0 || age > 200) { jsEngine->throwError(QJSValue::RangeError, "Age must be between 0 and 200"); } ... }

This function was introduced in Qt 5.12.

See also Script Exceptions and newErrorObject().

pub unsafe fn tr(
    s: *const c_char,
    c: *const c_char,
    n: c_int
) -> CppBox<QString>
[src]

Calls C++ function: static QString QJSEngine::tr(const char* s, const char* c, int n).

pub unsafe fn tr_utf8(
    s: *const c_char,
    c: *const c_char,
    n: c_int
) -> CppBox<QString>
[src]

Calls C++ function: static QString QJSEngine::trUtf8(const char* s, const char* c, int n).

Trait Implementations

impl CppDeletable for QJSEngine[src]

unsafe fn delete(&self)[src]

Destroys this QJSEngine.

Calls C++ function: virtual [destructor] void QJSEngine::~QJSEngine().

C++ documentation:

Destroys this QJSEngine.

Garbage is not collected from the persistent JS heap during QJSEngine destruction. If you need all memory freed, call collectGarbage manually right before destroying the QJSEngine.

impl Deref for QJSEngine[src]

type Target = QObject

The resulting type after dereferencing.

fn deref(&self) -> &QObject[src]

Calls C++ function: QObject* static_cast<QObject*>(QJSEngine* ptr).

impl DynamicCast<QJSEngine> for QObject[src]

unsafe fn dynamic_cast(ptr: Ptr<QObject>) -> Ptr<QJSEngine>[src]

Calls C++ function: QJSEngine* dynamic_cast<QJSEngine*>(QObject* ptr).

impl DynamicCast<QQmlApplicationEngine> for QJSEngine[src]

unsafe fn dynamic_cast(ptr: Ptr<QJSEngine>) -> Ptr<QQmlApplicationEngine>[src]

Calls C++ function: QQmlApplicationEngine* dynamic_cast<QQmlApplicationEngine*>(QJSEngine* ptr).

impl DynamicCast<QQmlEngine> for QJSEngine[src]

unsafe fn dynamic_cast(ptr: Ptr<QJSEngine>) -> Ptr<QQmlEngine>[src]

Calls C++ function: QQmlEngine* dynamic_cast<QQmlEngine*>(QJSEngine* ptr).

impl StaticDowncast<QJSEngine> for QObject[src]

unsafe fn static_downcast(ptr: Ptr<QObject>) -> Ptr<QJSEngine>[src]

Calls C++ function: QJSEngine* static_cast<QJSEngine*>(QObject* ptr).

impl StaticDowncast<QQmlApplicationEngine> for QJSEngine[src]

unsafe fn static_downcast(ptr: Ptr<QJSEngine>) -> Ptr<QQmlApplicationEngine>[src]

Calls C++ function: QQmlApplicationEngine* static_cast<QQmlApplicationEngine*>(QJSEngine* ptr).

impl StaticDowncast<QQmlEngine> for QJSEngine[src]

unsafe fn static_downcast(ptr: Ptr<QJSEngine>) -> Ptr<QQmlEngine>[src]

Calls C++ function: QQmlEngine* static_cast<QQmlEngine*>(QJSEngine* ptr).

impl StaticUpcast<QJSEngine> for QQmlEngine[src]

unsafe fn static_upcast(ptr: Ptr<QQmlEngine>) -> Ptr<QJSEngine>[src]

Calls C++ function: QJSEngine* static_cast<QJSEngine*>(QQmlEngine* ptr).

impl StaticUpcast<QJSEngine> for QQmlApplicationEngine[src]

unsafe fn static_upcast(ptr: Ptr<QQmlApplicationEngine>) -> Ptr<QJSEngine>[src]

Calls C++ function: QJSEngine* static_cast<QJSEngine*>(QQmlApplicationEngine* ptr).

impl StaticUpcast<QObject> for QJSEngine[src]

unsafe fn static_upcast(ptr: Ptr<QJSEngine>) -> Ptr<QObject>[src]

Calls C++ function: QObject* static_cast<QObject*>(QJSEngine* ptr).

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T, U> CastInto<U> for T where
    U: CastFrom<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> StaticUpcast<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.