Bindings are based on DOtherSide C bindings for QML Library is mostly feature-compliant with other bindings based on the library, but lacks some minor features and has quite a few bugs.
All examples are located in a folder
cargo run --example propertiesfor setting properties from Rust to QML.
cargo run --example listmodelfor an example of providing QML with list model from Rust.
cargo run --example listmodel_macrofor the same example, but using
cargo run --example sigslotsfor an example of how to create your own
QObjectwith signals and slots, and to communicate between QML and Rust. Also shows how to use
cargo run --example qobjectsfor an example of how to use
Q_OBJECT!macro with different types.
cargo run --example qvarlistsfor an example of how to use
qvarlist!macro to easily form
QVariant(used to pass data to QML) of a complex array.
cargo run --example threadedfor an example of multithreading.
cargo run --example qmlregisterfor an example of how to register and use your own types from Rust in QML.
- An example in
examples/resources(should be run manually by
cargo run) shows how to use qrc resources.
Requires CMake, Make, Qt (Core, Gui, Widgets, Quick), pkg-config (only for OS X and GNU/Linux) and, of course, Rust.
To run tests:
RUST_TEST_THREADS=1 cargo test
- Architect - an app showing some git stats, using qml-rust to provide properties and lists to QML in here.
- Kefia - A simple package manager, that provides a QListModel to QML, registers a QObject with slots and communicates between QML and Rust, here.
- Basic initialization and execution.
- Providing properties to QML files.
- QAbstractListModels - provides changable models for QML items (early draft, still lacks proper mutability).
- QObjects: slots, signals (limited properties support). Emitting signals and receiving slots works.
- Registering your own QML types (singletons or not) from Rust code.
To be done:
- the library is mostly done, but some stuff is lacking polish, like possible memory leaks or better macro designs.