1

我正在使用以下代码来加载我的 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"
4

1 回答 1

2

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

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

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

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

于 2013-11-25T05:21:51.827 回答