微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

fyne 从容器切片在容器中创建行

如何解决fyne 从容器切片在容器中创建行

我需要一个名为 rows 的切片,其中包含许多 fyne.Container 结构。 然后我需要将它们全部显示为窗口中的行。

我尝试这样做:

rows := []*fyne.Container{}
rows = append(
    rows,container.New(
        layout.NewGridLayout(4),widget.NewLabel("Trigger"),widget.NewLabel("Text"),widget.NewLabel("Enter"),widget.NewLabel("Active"),),)

w.SetContent(
    container.New(
        layout.NewGridLayout(1),rows...
    ),)

但我明白

不能在 container.New 的参数中使用行(类型 []*fyne.Container)作为类型 []fyne.CanvasObject

我不明白为什么要这样做:

w.SetContent(
    container.New(
        layout.NewGridLayout(1),container.New(
            layout.NewGridLayout(4),)

它工作正常......它不应该是相同的传递单个结构或[]类型......吗?

谢谢!

解决方法

该方法需要一个 fyne.CanvasObject 切片,这是结构体 fyne.Container 实现的接口。

结构类型的切片不能代替接口类型的切片,即使结构类型满足接口。

你的切片应该是接口类型而不是结构类型。然后,您可以将满足接口的对象附加到该切片:

rows := []fyne.CanvasObject{}
rows = append(
    rows,container.New(
        layout.NewGridLayout(4),widget.NewLabel("Trigger"),widget.NewLabel("Text"),widget.NewLabel("Enter"),widget.NewLabel("Active"),),)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。