【问题标题】:WxGo Grid Cell rendererWxGo 网格单元渲染器
【发布时间】:2018-10-15 23:21:13
【问题描述】:

我显然缺少对 Go 或 Wx 小部件的一些基本了解。

我正在尝试在第一列中创建一个带有复选框的非常基本的表格。

table := wx.NewGrid(w, wx.ID_ANY)
table.CreateGrid(4, 2)
table.SetCellEditor(0, 0, wx.SwigIsGridCellBoolRenderer{})

该代码给了我这个错误:

invalid type for composite literal: wx.SwigIsGridCellBoolRenderer

我知道我还必须设置编辑器。但我什至没有那么远。答案越详细越好。谢谢!

【问题讨论】:

    标签: go wxwidgets wxgo


    【解决方案1】:

    错误提示您正在使用 composite literal,它可用于创建 struts、切片、数组、映射或这些的派生值。

    这个:

    wx.SwigIsGridCellBoolRenderer{}
    

    将是 wx.SwigIsGridCellBoolRenderer 类型的空复合文字,但该类型不是您可以与复合文字一起使用的类型。它是一个接口类型:

    type SwigIsGridCellBoolRenderer interface {
        SwigGetGridCellBoolRenderer() GridCellBoolRenderer
    }
    

    wx.NewGrid() 返回一个wx.Grid 类型,它是一个带有方法的接口:

    SetCellEditor(arg2 int, arg3 int, arg4 SwigIsGridCellEditor)
    

    所以你必须向它传递一个满足/实现wx.SwigIsGridCellEditor 接口的值。

    这个接口只有一个方法:

    type SwigIsGridCellEditor interface {
        SwigGetGridCellEditor() GridCellEditor
    }
    

    因此,任何具有这种SwigGetGridCellEditor() 方法的类型都可以在这里使用。这些类型是:

    • wx.SwigClassGridCellTextEditor
    • wx.SwigClassGridCellAutoWrapStringEditor
    • wx.SwigClassGridCellBoolEditor
    • wx.SwigClassGridCellChoiceEditor
    • wx.SwigClassGridCellEnumEditor

    因此,创建上述其中一项的实例,您可以将其传递给table.SetCellEditor()

    例如:

    editor := wx.NewGridCellTextEditor()
    table.SetCellEditor(0, 0, editor)
    

    【讨论】:

    • 感谢您的详细回复。我现在正在重建我的工作站。我会在下周初测试!
    • @Chemdream 我很高兴。那么你应该接受并投票赞成这个答案。
    • 对不起,我以为我做到了。
    猜你喜欢
    • 2020-03-11
    • 2011-10-02
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 2018-02-13
    • 2018-08-26
    • 2013-10-19
    相关资源
    最近更新 更多