【问题标题】:wxWidgets generic event handlerswxWidgets 通用事件处理程序
【发布时间】:2019-08-27 05:38:04
【问题描述】:

使用 wxSmith 我有一个包含许多按钮的对话框,这些按钮需要相同的事件处理程序,但当然是作用于它们自己的数据实例。

以前使用 C++ builder 时,我会在小部件的标记字段中放置一个标识符字符串。然后我将有一个函数来迭代所有小部件并使用字符串作为构造函数来创建一个自定义对象并在标签字段中放置一个指向该对象的指针。

这样,通用事件处理程序可以简单地转换标记字段来获取知道如何处理事件的自定义特定实例。

其他 GUI API,例如 Visual Basic,更简单,但允许控件数组或索引,并且通过引用索引调用事件,所以这种事情仍然可以使用数组。

到目前为止,我能看到将附加信息与 wxWidget 关联的唯一方法是将其继承到我自己的自定义控件中,但我担心这会破坏与 wxSmith 的兼容性。

有人知道这样做的优雅方法吗?

【问题讨论】:

标签: events wxwidgets


【解决方案1】:

如您所说,处理此问题的一种简单方法是使用通用事件处理程序。 只需将所有按钮事件连接(绑定)到对话框的相同功能(方法)即可:

Bind(wxEVT_BUTTON, TheDialog::OnButtonClicked, this);

在相应的事件处理程序中,您将能够使用 event.GetEventObject() 检索相关按钮,如果您知道它的 ID,则使用 event.GetId()。

问候 Xav'

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多