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/

相关推荐
qq_3129201115 分钟前
安装lua-nginx-module实现WAF功能
nginx·junit·lua
单音GG17 分钟前
推荐一个基于协程的C++(lua)游戏服务器
服务器·c++·游戏·lua
charlie1145141911 小时前
Qt Event事件系统小探2
c++·qt·拖放·事件系统
小狮子安度因1 小时前
Qt滑动条美化自定义
qt
Bruce小鬼3 小时前
QT鼠标事件
开发语言·qt·计算机外设
glimix3 小时前
GxtWaitCursor:Qt下基于RAII的鼠标等待光标类
qt
袁庭新5 小时前
安装luasocket模块时提示“sudo: luarocks:找不到命令“问题,该如何解决?
java·人工智能·ai·aigc·lua·luarocks·袁庭新
Xam_d_LM14 小时前
【Qt】在 Qt Creator 中使用图片资源方法(含素材网站推荐)
开发语言·c++·qt·ui·贴图·qt5
何曾参静谧14 小时前
「QT」几何数据类 之 QSizeF 浮点型尺寸类
开发语言·qt
机器视觉知识推荐、就业指导14 小时前
Qt中自定义CustomDoubleSpinBox
开发语言·qt