【发布时间】:2017-08-24 13:32:22
【问题描述】:
我在理解如何使用切换按钮进行 GTK+ 与 Haskell 绑定时遇到了一些麻烦。
我想要做的是显示带有两列的treeView:一列包含字符串,另一列包含切换按钮。用户必须勾选切换按钮以选择他想在程序的另一部分中使用的输入。
我的模型是一个元组列表(String,Bool),布尔值应该反映切换按钮的状态。一开始,都是假的。
这是我的代码:
treeview <- builderGetObject builder castToTreeView "diffDisplayTreeView"
treeviewselect <- treeViewGetSelection difftreeview
dcolumn <- builderGetObject builder castToTreeViewColumn "dcolumn"
selcolumn <- builderGetObject builder castToTreeViewColumn "selcolumn"
dcell <- builderGetObject builder castToCellRendererText "dcell"
selcell <- builderGetObject builder castToCellRendererToggle "selcell"
[...]
store <- listStoreNew modelFromSomewhereElse
cellLayoutSetAttributes dcolumn dcell store $ \x -> [cellText := fst(x)]
cellLayoutSetAttributes selcolumn selcell store $ \x -> [cellToggleActivate := snd(x)]
treeViewSetModel treeview store
它在初始化 treeView 时效果很好,但是当我单击切换按钮时,它仍处于初始化状态。我想捕获特定单元格的 cellToggled 并正确更改模型,但我不太了解如何在 treeView 选择中导航。
任何帮助将不胜感激:)
【问题讨论】:
-
对不起,我没有 Haskell 代码可以给你看。无论如何,您必须连接到渲染器
toggled信号并自己更改存储。渲染器会自动显示当前状态。 -
当我将商店更改绑定到
clicked按钮时,它似乎有效,但toggled信号有些错误(这里有一些混乱的类型)
标签: haskell gtk togglebutton glade