我正在使用以下代碼生成一個(gè)主窗口,其中帶有一個(gè)用于打開(kāi)其他窗口的按鈕。我希望能夠反復(fù)隱藏和顯示其他窗口。關(guān)閉主窗口應(yīng)退出程序:package mainimport ("github.com/andlabs/ui")func main() { ui.Main(makeAllWins)}var mainWindow *ui.Windowvar otherWindow *ui.Windowfunc makeAllWins(){ makeMainWin() makeOtherWin() mainWindow.Show()}func makeMainWin(){ var otherButton = ui.NewButton("Other module") otherButton.OnClicked( func (*ui.Button) { otherWindow.Show() }) var box = ui.NewVerticalBox() box.Append(ui.NewLabel("Select module"), false) box.Append(otherButton, false) mainWindow = ui.NewWindow("Hello", 200, 100, false) mainWindow.SetChild(box) mainWindow.OnClosing( func (*ui.Window) bool { ui.Quit(); return true } )}func makeOtherWin(){ var box = ui.NewVerticalBox() box.Append(ui.NewLabel("label1"), false) box.Append(ui.NewLabel("label2"), false) box.Append(ui.NewLabel("label3"), false) otherWindow = ui.NewWindow("Other", 200, 100, false) otherWindow.SetChild(box) otherWindow.OnClosing( func (*ui.Window) bool { otherWindow.Hide(); return true } ) // I THINK PROBLEM IS IN THIS LINE}但是,當(dāng)我隱藏一次后顯示另一個(gè)窗口時(shí),所有標(biāo)簽都消失了。重復(fù)時(shí),程序崩潰并出現(xiàn)以下錯(cuò)誤:fatal error: unexpected signal during runtime execution[signal SIGSEGV: segmentation violation code=0x1 addr=0x67fb0a pc=0x67fb0a]問(wèn)題出在哪里以及如何解決。感謝您的幫助。
1 回答

catspeake
TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
這里:
otherWindow.OnClosing(?func?(*ui.Window)?bool?{?otherWindow.Hide();?return?true?}?)
你應(yīng)該返回false
而不是true
。事實(shí)上,當(dāng)您關(guān)閉窗口時(shí),該窗口會(huì)被破壞,從而在您稍后嘗試引用它時(shí)導(dǎo)致分段錯(cuò)誤。
OnClosing 注冊(cè) f 在用戶單擊窗口的關(guān)閉按鈕時(shí)運(yùn)行。一次只能注冊(cè)一項(xiàng)功能。如果 f 返回 true,則使用 Destroy 方法銷(xiāo)毀窗口。如果 f 返回 false,或者從未調(diào)用 OnClosing,則窗口不會(huì)被銷(xiāo)毀并保持可見(jiàn)。
- 1 回答
- 0 關(guān)注
- 142 瀏覽
添加回答
舉報(bào)
0/150
提交
取消