Qt 4.8
Public Functions | Properties | List of all members
QScriptable Class Reference

The QScriptable class provides access to the Qt Script environment from Qt C++ member functions. More...

#include <qscriptable.h>

Inheritance diagram for QScriptable:
QDBusConnectionConstructor QScriptDBusConnection QScriptDBusInterfaceConstructor QScriptDBusMessageConstructor

Public Functions

QScriptValue argument (int index) const
 Returns the function argument at the given index, or an invalid QScriptValue if the Qt function was not invoked from script code. More...
 
int argumentCount () const
 Returns the number of arguments passed to the function in this invocation, or -1 if the Qt function was not invoked from script code. More...
 
QScriptContextcontext () const
 Returns a pointer to the QScriptContext associated with the current Qt function call, or 0 if the Qt function was not invoked from script code. More...
 
QScriptEngineengine () const
 Returns a pointer to the QScriptEngine associated with the current Qt function call, or 0 if the Qt function was not invoked from script code. More...
 
 QScriptable ()
 
QScriptValue thisObject () const
 Returns the `this' object associated with the current Qt function call, or an invalid QScriptValue if the Qt function was not invoked from script code. More...
 
 ~QScriptable ()
 

Properties

QScopedPointer< QScriptablePrivated_ptr
 

Detailed Description

The QScriptable class provides access to the Qt Script environment from Qt C++ member functions.

Since
4.3

With QScriptEngine::newQObject(), you can expose the signals and slots and properties of any QObject (or subclass) to script code. QScriptable augments this functionality by giving your C++ members access to the Qt Script environment they are invoked in; conceptually, it is similar to QObject::sender().

By subclassing QScriptable, you get the following functions in your class: thisObject(), argumentCount(), argument(), context() and engine(). With these functions, you have full access to the Qt Script environment from the slots and property access functions of your class, when they are invoked from script code.

For example, you can throw a Qt Script exception from a slot; manipulate the `this' object associated with the function call; inspect the arguments stored in the QScriptContext to know the "real" arguments passed to the function from script code; and call script functions from your slot.

A typical use case of QScriptable is to implement prototype objects for custom C++ types. You define the scriptable interface of your custom type in a QScriptable subclass using properties and slots; then you wrap an instance of your class using QScriptEngine::newQObject(), and finally pass the result to QScriptEngine::setDefaultPrototype(). See the Default Prototypes Example to see how this can be done.

The following is what subclassing QScriptable typically looks like:

class MyScriptableObject: public QObject,
protected QScriptable
{
...
public slots:
void doSomething();
double doSomethingElse();
}

The only difference from regular QObject subclassing is that you also inherit from QScriptable.

In the implementation of your slots, you can then use the functions inherited from QScriptable:

void MyScriptableObject::doSomething()
{
context()->throwError("Threw an error from a slot");
}
double MyScriptableObject::doSomethingElse()
{
return qscriptvalue_cast<double>(thisObject());
}
See also
{Default Prototypes Example}, QScriptEngine::newFunction()

Definition at line 45 of file qscriptable.h.

Constructors and Destructors

◆ QScriptable()

QScriptable::QScriptable ( )
Warning
This function is not part of the public interface.

Definition at line 87 of file qscriptable.cpp.

88  : d_ptr(new QScriptablePrivate())
89 {
90  d_ptr->q_ptr = this;
91 }
QScriptable * q_ptr
Definition: qscriptable_p.h:56
QScopedPointer< QScriptablePrivate > d_ptr
Definition: qscriptable.h:58

◆ ~QScriptable()

QScriptable::~QScriptable ( )
Warning
This function is not part of the public interface.

Definition at line 96 of file qscriptable.cpp.

97 {
98 }

Functions

◆ argument()

QScriptValue QScriptable::argument ( int  index) const

Returns the function argument at the given index, or an invalid QScriptValue if the Qt function was not invoked from script code.

See also
argumentCount()

Definition at line 159 of file qscriptable.cpp.

160 {
161  if (QScriptContext *c = context())
162  return c->argument(index);
163 
164  return QScriptValue();
165 }
The QScriptContext class represents a Qt Script function invocation.
unsigned char c[8]
Definition: qnumeric_p.h:62
QScriptContext * context() const
Returns a pointer to the QScriptContext associated with the current Qt function call, or 0 if the Qt function was not invoked from script code.
quint16 index
The QScriptValue class acts as a container for the Qt Script data types.
Definition: qscriptvalue.h:57

◆ argumentCount()

int QScriptable::argumentCount ( ) const

Returns the number of arguments passed to the function in this invocation, or -1 if the Qt function was not invoked from script code.

See also
argument()

Definition at line 145 of file qscriptable.cpp.

146 {
147  if (QScriptContext *c = context())
148  return c->argumentCount();
149 
150  return -1;
151 }
The QScriptContext class represents a Qt Script function invocation.
unsigned char c[8]
Definition: qnumeric_p.h:62
QScriptContext * context() const
Returns a pointer to the QScriptContext associated with the current Qt function call, or 0 if the Qt function was not invoked from script code.

◆ context()

QScriptContext * QScriptable::context ( ) const

Returns a pointer to the QScriptContext associated with the current Qt function call, or 0 if the Qt function was not invoked from script code.

Definition at line 116 of file qscriptable.cpp.

Referenced by argument(), argumentCount(), QScriptDBusMessageConstructor::protoType(), and thisObject().

117 {
118  if (QScriptEngine *e = engine())
119  return e->currentContext();
120 
121  return 0;
122 }
QScriptEngine * engine() const
Returns a pointer to the QScriptEngine associated with the current Qt function call, or 0 if the Qt function was not invoked from script code.
The QScriptEngine class provides an environment for evaluating Qt Script code.

◆ engine()

QScriptEngine * QScriptable::engine ( ) const

Returns a pointer to the QScriptEngine associated with the current Qt function call, or 0 if the Qt function was not invoked from script code.

Definition at line 105 of file qscriptable.cpp.

Referenced by context(), QtDBusScriptPlugin::initialize(), QScriptDBusMessageConstructor::protoType(), QDBusConnectionConstructor::QDBusConnectionConstructor(), QScriptDBusInterfaceConstructor::qscript_call(), and QScriptDBusConnection::QScriptDBusConnection().

106 {
107  Q_D(const QScriptable);
108  return d->engine;
109 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QScriptable class provides access to the Qt Script environment from Qt C++ member functions...
Definition: qscriptable.h:45

◆ thisObject()

QScriptValue QScriptable::thisObject ( ) const

Returns the `this' object associated with the current Qt function call, or an invalid QScriptValue if the Qt function was not invoked from script code.

Definition at line 130 of file qscriptable.cpp.

131 {
132  if (QScriptContext *c = context())
133  return c->thisObject();
134 
135  return QScriptValue();
136 }
The QScriptContext class represents a Qt Script function invocation.
unsigned char c[8]
Definition: qnumeric_p.h:62
QScriptContext * context() const
Returns a pointer to the QScriptContext associated with the current Qt function call, or 0 if the Qt function was not invoked from script code.
The QScriptValue class acts as a container for the Qt Script data types.
Definition: qscriptvalue.h:57

Properties

◆ d_ptr

QScopedPointer<QScriptablePrivate> QScriptable::d_ptr
private

Definition at line 58 of file qscriptable.h.

Referenced by QScriptable().


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