Haskell 如何访问ListStore GtkBuilder

Haskell 如何访问ListStore GtkBuilder,haskell,gtk,gtk2hs,gtkbuilder,Haskell,Gtk,Gtk2hs,Gtkbuilder,我使用以下代码加载gui元素: import Graphics.UI.Gtk main = do initGUI -- loading builder <- builderNew builderAddFromFile builder "gui.glade" window <- builderGetObject builder castToWindow "window" onDestroy window mainQuit widgetShowAll w

我使用以下代码加载gui元素:

import Graphics.UI.Gtk

main = do
  initGUI

  -- loading
  builder <- builderNew
  builderAddFromFile builder "gui.glade"
  window <- builderGetObject builder castToWindow "window"

  onDestroy window mainQuit
  widgetShowAll window
  mainGUI

这取决于你想用它做什么

  • 您始终可以使用castToTreeModel来迭代listStore中的项。。。。这提供了只读信息

  • 您只需在Haskell中完全忽略listStore中的数据,并将其连接到glade文件中相应的小部件即可使用。这对于固定的listStore(即目录或对更改或查询没有意义的东西)是有意义的

  • 您可以直接在haskell中创建listStore,并使用treeViewSetModel将其绑定到使用它的小部件。这使您能够完全访问数据,您可以添加或删除项目,并且它将在视图中更改


  • 第三种选择效果很好!下面是我在其他人陷入困境时使用的示例代码:
    -- doesn't compile because castToListStore is part of a hidden module, unlike castToWindow :(
    listStore <- builderGetObject builder castToListStore "listStore"