QtLua

描述

QtLua 库旨在使用 Lua 脚本语言使 Qt4/Qt5 应用程序可编写脚本。它是 QtScript 模块的替代品。

QtLua 不会为 Qt 生成或使用生成的绑定代码。相反,它提供了有用的 C++ 包装器类,使 C++ 和 lua 对象都可以从 lua 和 C++ 访问。它利用 Qt 元对象系统将 QObject 成员公开给 lua 脚本。

QtLua 不是为了在纯 Lua 中开发应用程序而设计的,而是使用 Lua 作为脚本语言来扩展 Qt C++ 应用程序。
特征

基本功能:

基于 Lua 堆栈的 C API 未公开,仅从 C++ 代码中操作 QtLua::State 和 QtLua::Value 等 C++ 对象。

由于 C++ 运算符重载,可以从 C++ 访问与 Lua 中几乎相同的简单语法。

通过从 QtLua::UserData 类继承,可以将 C++ 对象作为 userdata 值公开给 Lua。所有 Lua 元操作都可以通过覆盖虚函数来重新定义,包括对 Lua 中的 userdata 对象的迭代。

QtLua::Ref 智能指针类支持对基于 QtLua::UserData 的对象的引用跟踪,并且可以使这些 C++ 对象可进行垃圾回收。

QtLua::Iterator 包装器类允许使用通常的 C++ 迭代器来遍历 Lua 表之类的值。Lua 迭代器还可用于从 Lua 脚本遍历基于 QtLua::UserData 的 C++ 对象。可以使用可用的容器代理类之一直接从 Lua 访问 Qt 模板容器。

QtLua::Function 类可以被子类化,以轻松定义可从 Lua 调用的 C++ 函数对象。QtLua:😛 lugin 类允许编写可能包含 QtLua::Function 对象的 Qt 插件。

支持 Lua 协程,并可用于从 Qt 应用程序中的 Lua 脚本控制并行作业。

QObject 相关功能:

Qt QObject 包装允许从 Lua 创建和操作 QObject 对象。

QObject 属性、枚举、插槽和子对象可以从 Lua 访问。Qt Signals 可以直接连接到 Lua 函数。

qt Lua 库可用,其中包含用于创建 QObject 和管理来自 Lua 的信号/插槽连接的函数。

基于 QObject 的用户类可以在 QtLua 元对象列表中注册。这允许实例化用户类并直接从 Lua 脚本和 .ui 文件访问枚举值。

用户定义的 Qt 类型可以与用户定义的转换函数一起注册。这允许 QtLua 在调用 Qt 插槽或访问 QObject 属性时在 Qt 用户类型和 Lua 值之间执行透明转换。

Qt Widgets 和用户界面功能:

qtLua_uic工具可用于将 Qt .ui 用户界面文件编译为 Lua 脚本。一些 Qt 函数也被包装起来,以便能够直接从 Lua 加载 .ui 文件。

Qt QtLua::Console 小部件是一个控制台小部件,具有历史记录和 Lua 表完成功能。qtLua 工具基于此小部件,并提供基于 Lua 的 shell 用于实验。

qt Lua 库包装了一些重要的用户界面功能,这些功能无法通过 Qt 元对象系统直接获得。

Qt Model/view 相关功能:

QtLua::UserItemModel 类支持开发分层 C++ 数据结构,可从 Lua 脚本和 Qt 视图小部件中编辑。

QtLua::TableTreeModel 和 QtLua::TableGridModel 类可用于向 Qt 视图公开 Lua 表。

QtLua::LuaModel 类允许在纯 Lua 中实现 Qt 模型。

QtLua::ItemViewDialog 类为模型数据显示和编辑提供了一个通用对话框。它可以与各种视图一起使用,并具有可自定义的编辑按钮。

qt Lua 库包含一些函数,允许从 Lua 实例化 MVC 相关模型和对话框。

QtLua 2.0 已通过 Lua 版本 5.0、5.1 和 5.2 以及 Qt 版本 4.8 和 5.0 的测试。

参考:https://www.nongnu.org/libqtlua/

相关推荐
emo了小猫3 小时前
Redis 执行 Lua 脚本过程中报错,会发生什么
redis·junit·lua
qq_401700414 小时前
Qt中事件循环与并发机制的协同工作
qt
软件测试雪儿1 天前
高频Postman软件测试面试题
测试工具·lua·postman
qq_401700411 天前
Qt Positioning 模块访问设备地理位置信息
开发语言·qt
闫有尽意无琼1 天前
银河麒麟v11 arm编译Qt creator8.0.2报错
开发语言·qt
lqj_本人1 天前
鸿蒙Qt触控疑云:事件传递丢失与坐标偏移修复
qt·华为·harmonyos
_OP_CHEN1 天前
从零开始的Qt开发指南:(五)Qt 常用控件之 QWidget(上):解锁 Qt 界面开发的核心基石
开发语言·c++·qt·前端开发·qwidget·gui开发·qt常用控件
happyjoey2171 天前
使用Qt自带的Maintenance Tool将Qt6.9升级为QT6.10
开发语言·qt
lqj_本人2 天前
鸿蒙Qt生命周期:后台被杀后的数据自救
qt·华为·harmonyos
爱码小白2 天前
PyQt5 QTimer总结
开发语言·qt