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



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

我试过这样做:

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...
),
)

但我有

不能在容器的参数中使用行(类型[]*fyne.Container(作为类型[]fyne.CanvasObject。新

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

w.SetContent(
container.New(
layout.NewGridLayout(1),
container.New(
layout.NewGridLayout(4),
widget.NewLabel("Trigger"),
widget.NewLabel("Text"),
widget.NewLabel("Enter"),
widget.NewLabel("Active"),
),
container.New(
layout.NewGridLayout(4),
widget.NewLabel("Trigger"),
widget.NewLabel("Text"),
widget.NewLabel("Enter"),
widget.NewLabel("Active"),
),
),
)

它运行良好。。。它不应该是相同的传递单个结构还是[]类型。。。?

谢谢!

该方法需要一个fyne.CanvasObjects的切片,这是结构体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"),
),
)

相关内容

  • 没有找到相关文章

最新更新