gpt4 book ai didi

c++ - 实现可编写脚本的按钮行为

转载 作者:行者123 更新时间:2023-11-30 04:44:42 24 4
gpt4 key购买 nike

我正在为我的 C++ 项目开发自定义轻量级 UI 库,我对实现控件的行为有疑问。

目前我有一个系统可以从提供的文件创建控件实例,因此图形表示、文本、尺寸和其他参数都在外部文件中定义。关于按钮和其他交互式控件:我有基本按钮类,我正在为每个按钮创建派生类,并使用其自己的行为相关方法实现(onClick() 等)参见伪代码段:

class Button
{
public:
Button();
virtual void onClick();
};

class newButton : public Button
{
void onClick()
{}//specific implementation
};

我正在寻找在外部描述行为的方法(可能是脚本语言)并在编译时将其插入到基本按钮的特定实例中,因此我不需要创建按钮的子类,并且按钮/组件可以在外部文件。任何建议或建议将不胜感激。

谢谢

最佳答案

嗯,我想你还有一个 XY problem : 使用运行时对象多态性是不能解决你的愿望的。虽然它使 C++ 代码不关心使用哪个具体实现,并且可以在运行时接受新的未知解决方案,但这些新解决方案仍然必须使用 C++ 编译器进行编译,并符合基类定义和 C++ 实现(您的编译器,如 gcc 或 MSVC)运行时多态性的具体细节。

因为我假设你不想要那个,这也是有道理的,并且是一种在 C++ 世界中越来越流行的模式(参见 QML 或 Javascript/C++ 混合体),你有一些选择。

要么您在 C++ 中实现所有基本行为构建 block (您当然可以在其中使用运行时多态性甚至 compile time polymorphism ),然后您可以在运行时根据您的 UI 描述语言简单地组合它们。要解析所谓的 DSL,即 UI 描述语言,您可以使用像 boost spirit 这样的库。

如果您真的要编写 UI 逻辑脚本而不是简单地描述它,您将不得不设计和实现一整套编程语言,该语言还与您的 C++ 实现运行时对象多态性兼容。我会发现这是一项非常艰巨而漫长的任务。

但是不要失望,像 Javescript/C++ 这样的现成解决方案以 React Native 和 Electron 的形式使用 native node modules , 或 QML/Qt, 或 lua ,一种脚本语言,专门设计用于其他编程语言。

关于c++ - 实现可编写脚本的按钮行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57605204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com