diff --git a/src/plugins/lua/bindings/utils.h b/src/plugins/lua/bindings/utils.h index b42c5f85e72..3a1233b482b 100644 --- a/src/plugins/lua/bindings/utils.h +++ b/src/plugins/lua/bindings/utils.h @@ -49,4 +49,16 @@ inline void mirrorEnum(sol::table &target, QMetaEnum metaEnum, const QString &na for (int i = 0; i < metaEnum.keyCount(); ++i) widgetAttributes.set(metaEnum.key(i), metaEnum.value(i)); }; + +template +inline QFlags tableToFlags(const sol::table &table) noexcept { + static_assert(std::is_enum::value, "Enum type required"); + + QFlags flags; + for (const auto& kv : table) + flags.setFlag(static_cast(kv.second.as())); + + return flags; +} + } // namespace Lua::Internal