QML-rust - bindings for Qt Quick
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 examples/, under example_name.rs and example_name.qml names.
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 usingQ_LISTMODEL!andQ_LISTMODEL_ITEM!macro.cargo run --example sigslotsfor an example of how to create your ownQObjectwith signals and slots, and to communicate between QML and Rust. Also shows how to useQ_OBJECT!macro.cargo run --example qobjectsfor an example of how to useQ_OBJECT!macro with different types.cargo run --example qvarlistsfor an example of how to useqvarlist!macro to easily formQVariant(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 bycargo 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.
Done:
- 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.