EQL5/examples/M-modules/quick/qml-lisp
2017-02-14 00:31:40 +01:00
..
lib revision of "quick" examples 2017-02-12 17:06:25 +01:00
qml "quick": update docu 2017-02-07 12:10:35 +01:00
example.lisp revision of "gui/properties.lisp" for QML; 2017-02-14 00:31:40 +01:00
qml-lisp.lisp revision of "quick" examples 2017-02-12 17:06:25 +01:00
README.txt fix function QPROPERTIES*; update docu; extend "gui/properties.lisp" for QML; fix QAPROPOS inverse sorting; 2017-02-14 00:22:37 +01:00

A trivial example of calling Lisp functions from QML.


RUN
===

Please run it from this directory.

For Emacs/Slime, this would be:

    eql5 ~/slime/eql-start-swank.lisp example


CALL LISP
=========

Examples:

    Lisp.call("cl:foo", x, y)
    Lisp.call(this, "cl:foo", x, y)    ; optionally pass 'this'

    Lisp.apply("cl:foo", [x, y])
    Lisp.apply(this, "cl:foo", [x, y]) ; see above

'this' can be accessed in Lisp through qml:*caller*


GET/SET QML OBJECT PROPERTIES
=============================

You can access any QML property from Lisp (needs 'objectName' to be set).

Examples:

    (in-package :qml)

    (qml-get "label" "text")
    (qml-set "label" "color" "red")
    (qml-set "label" "font.pixelSize" 24)


QML FILES
=========

The only "import" needed is:

    import EQL5 1.0

which provides all of:

    Lisp.call()
    Lisp.apply()
    PaintedItem

To reload the QML source file after changes, do:

    (qml:reload)


NOTES
=====

Anywhere an 'objectName' is expected, you can optionally pass a QQuickItem
directly, or NIL if you want to use the root item.

Please see also the documentation in "qml/example.qml".


HELP (properties)
====

Since many QML types have no corresponding C++ class, the specific properties
can't be inspected using QPROPERTIES (only the generic ones).

To list all properties (including user defined ones), use QPROPERTIES* instead.

Example:

    (qproperties* (qml:find-quick-item "label"))


TIP
===

In order to have uniform access to QQuickItems from both QML and Lisp
functions, it is convenient to set both 'id:' and 'objectName:' to the
same name.

QML Example:

    Item {
        id: myItem
        objectName: "myItem"
    }