如何访问ListStore GtkBuilder

时间:2013-11-25 01:48:16

标签: 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 window
  mainGUI

我如何访问名为“listStore”的ListStore,就像我访问Window名为“窗口”的那样

示例:

-- doesn't compile because castToListStore is part of a hidden module, unlike castToWindow :(
listStore <- builderGetObject builder castToListStore "listStore"

1 个答案:

答案 0 :(得分:2)

这取决于你想用它做什么......

  1. 您始终可以使用castToTreeModel来遍历listStore中的项....这样只会提供只读信息。

  2. 您可以在Haskell中完全忽略listStore中的数据,然后将其连接起来以供glade文件中的相应小部件使用。这对于固定的listStore是有意义的(即内容表或对更改或查询没有意义的东西)。

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