如何在Haskell的GI-Gtk中将Widget转换为Label?

时间:2017-12-26 13:48:12

标签: haskell gtk3

我有这个示例代码,其中我有一个包含ListBoxRows的ListBox,而ListBoxRows又包含一个Label。当我点击ListBox时,我得到一个ListBoxRow。到现在为止还挺好。当我想与ListBoxRows孩子交互时,问题就开始了。

我使用此函数来获取Label,它是ListBoxRow的子元素。 The way she suggests to update validators

但是,返回的类型是Widget。如何转换对象的类型?函数widgetGetName告诉我它是一个标签,但Haskell Type系统坚持认为它是一个Widget,所以我不能使用标签特定的功能。

工作代码

array

感谢Dan

1 个答案:

答案 0 :(得分:1)

试试这个:

cc <- containerGetChildren r
mlabel <- castTo Label (head cc)
case mlabel of
  Nothing -> putStrLn “Not a label!”
  Just label -> labelGetText label >>= putStrLn