我正在编写一个应用程序cursive https://docs.rs/cursive/0.16.3/cursive/GUI,我想当用户按下某些键时执行某些操作。例如,当使用表格视图 https://docs.rs/cursive_table_view/0.13.0/cursive_table_view/struct.TableView.html当用户选择一行并按下某个键(除了Enter
这是由处理的TableView
并允许我实施on_submit
)。这些操作将由所选行参数化,即使用索引或行中的某些值。
由于我无权访问on_event
并且似乎没有我可以注册的关联回调TableView
,我只能考虑存储一些“全局”参数on_select
然后注册全局草书处理程序ala add_global_callback。这很快就会变得一团糟,所以我希望有更好的方法。
我以为我可以做相当于扩展TableView
就像 OOP 中的继承一样,但我问here https://stackoverflow.com/questions/66396321/rust-inheritance没有取得多大成功,而是在评论中得到了明智的建议,只是询问我想要完成的任务。
我想你只需要包装你的TableView
in an OnEventView
你应该能够捕获任何你想要的事件,并且它会通过任何你不想要的事件。
cursive.add_layer(
OnEventView::new(
TableView::new( ... )
).on_event(...)
我看到了你的另一个帖子。我对此有两分钱:
所以而不是 OOP 的扩展方式TableView
您插入一个视图“上方”TableView
这确实有一些作用。这可以被认为与扩展相同,但它更通用。这OnEventView
可以“包装”任何视图,而扩展特定类仅对该类有用。
扩展通常意味着您必须实现一堆与捕获事件无关的样板文件,而这正是您在本例中想要做的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)