亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何擴展 fyne BaseWidget - go 給出錯誤“type *

如何擴展 fyne BaseWidget - go 給出錯誤“type *

Go
嗶嗶one 2023-02-21 19:08:49
我正在嘗試擴展 fyne 小部件以具有帶背景的簡單可點擊內容。我搜索了 fyne 小部件以找到一個可以用作入門的示例,并在 List/ListItem 中找到了類似的東西。我基本上復制了列表項代碼并稍微調整了一下。它看起來確實類似于fyne 文檔中的簡單示例。但是由于某些未知原因,go 給了我一個錯誤,我不知道原因是什么,也不知道如何解決:custom_widget/simple_card.go:80:24: c.card.super undefined (type *SimpleCard has no field or method super)這是模塊的代碼(custom_widget/simple_card.go):package custom_widgetimport (    "fyne.io/fyne/v2"    "fyne.io/fyne/v2/canvas"    "fyne.io/fyne/v2/theme"    "fyne.io/fyne/v2/widget"    "log")// Declare conformity with interfaces.var _ fyne.Widget = (*SimpleCard)(nil)var _ fyne.Tappable = (*SimpleCard)(nil)type SimpleCard struct {    widget.BaseWidget    onTapped   func()    background *canvas.Rectangle    content    fyne.CanvasObject    selected   bool}func NewSimpleCard(content fyne.CanvasObject, tapped func()) *SimpleCard {    card := &SimpleCard{onTapped: tapped, content: content}    card.ExtendBaseWidget(card)    return card}// CreateRenderer is a private method to Fyne which links this custom_widget to its renderer.func (c *SimpleCard) CreateRenderer() fyne.WidgetRenderer {    c.ExtendBaseWidget(c)    c.background = canvas.NewRectangle(theme.SelectionColor())    c.background.Hide()    objects := []fyne.CanvasObject{c.background, c.content}    // NewBaseRenderer and BaseRenderer are copied from    // https://github.com/fyne-io/fyne/blob/master/internal/widget/base_renderer.go    // because the functionality is marked internal in fyne !?    return &SimpleCardRenderer{NewBaseRenderer(objects), c}}func (c *SimpleCard) Tapped(_ *fyne.PointEvent) {    log.Println("I have been tapped")    if c.onTapped != nil {        c.selected = true        c.Refresh()        c.onTapped()    }}// Declare conformity with the WidgetRenderer interface.var _ fyne.WidgetRenderer = (*SimpleCardRenderer)(nil)type SimpleCardRenderer struct {    BaseRenderer    card *SimpleCard}
查看完整描述

1 回答

?
UYOU

TA貢獻1878條經驗 獲得超4個贊

刪除您創建的所有渲染器類型并在CreateRenderer剛剛的 return中widget.NewSimpleRenderer(container .NewMax(c.background, c.content))。它比你想象的要簡單。

從主要小部件中復制代碼通常不是最好的方法,因為我們有快捷方式和/或必須支持比您自己的小部件更多的功能。


查看完整回答
反對 回復 2023-02-21
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號