#qt #bindings #name #ffi

qml

Rust 的安全 QML 绑定

9 个版本

使用旧的 Rust 2015

0.0.9 2016 年 12 月 11 日
0.0.8 2016 年 10 月 18 日
0.0.7 2016 年 9 月 25 日
0.0.6 2016 年 8 月 31 日
0.0.1 2016 年 6 月 30 日

#46 in #qt


用于 kefia

MIT 许可证

75KB
1.5K SLoC

QML-rust - Qt Quick 的绑定

Build Status Crates.io

绑定基于 DOtherSide 的 QML C 绑定。库的功能与基于该库的其他绑定基本兼容,但缺少一些小功能,并且存在一些错误。

文档

示例

所有示例都位于文件夹 examples/ 中,在 example_name.rsexample_name.qml 命名。

  • cargo run --example properties 从 Rust 到 QML 设置属性。
  • cargo run --example listmodel 提供从 Rust 到 QML 列表模型的示例。
  • cargo run --example listmodel_macro 提供相同的示例,但使用 Q_LISTMODEL!Q_LISTMODEL_ITEM! 宏。
  • cargo run --example sigslots 提供如何创建自己的 QObject 并使用信号和槽进行通信的示例,以及 QML 和 Rust 之间的通信。还展示了如何使用 Q_OBJECT! 宏。
  • cargo run --example qobjects 提供如何使用不同类型的 Q_OBJECT! 宏的示例。
  • cargo run --example qvarlists 以便了解如何使用 qvarlist! 宏轻松地形成 QVariant(用于将数据传递到 QML)的复杂数组示例。
  • cargo run --example threaded 以了解多线程示例。
  • cargo run --example qmlregister 以了解如何在 QML 中注册和使用 Rust 中的自定义类型。
  • examples/resources 中的示例(应通过 cargo run 手动运行)展示了如何使用 qrc 资源。

需要 CMake、Make、Qt(Core、Gui、Widgets、Quick)以及当然,还有 Rust。

要运行测试: RUST_TEST_THREADS=1 cargo test

应用内示例

  • Architect - 一个显示一些 git 统计信息的应用,使用 qml-rust 在 这里 为 QML 提供属性和列表。
  • Kefia - 一个简单的软件包管理器,为 QML 提供一个 QListModel,注册一个 QObject 并带有槽,以及在 QML 和 Rust 之间进行通信,这里

状态

完成

  • 基本初始化和执行。
  • 为 QML 文件提供属性。
  • QAbstractListModels - 为 QML 项目提供可变模型(早期草案,尚缺乏适当的可变性)。
  • QObjects:槽、信号(有限属性支持)。发出信号和接收槽正常工作。
  • 从 Rust 代码注册自己的 QML 类型(单例或非单例)。

待完成

  • 库大部分已完成,但某些功能缺乏打磨,例如可能的内存泄漏或更好的宏设计。

依赖项

~57KB