mirror of
https://gitlab.com/eql/EQL5.git
synced 2025-12-06 10:31:19 -08:00
| .. | ||
| qml | ||
| example.lisp | ||
| properties.lisp | ||
| README.txt | ||
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)
(q< |text| "label")
(q> |color| "label" "red")
(q> |font.pixelSize| "label" 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 _instance_ properties (including user defined ones), use
QPROPERTIES* instead.
Examples:
(qproperties* (qml:find-quick-item "label"))
Using a dialog, where you can use button [Select] to visually select items:
(show-properties-dialog "label") ; see "properties.lisp"
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: my_item
objectName: "my_item"
}