我有一個特定且可能不尋常的問題,涉及在 Fyne 中構(gòu)建 GUI。我的應(yīng)用程序是選項卡式的;窗口中的第一件事是 TabContainer。要放置在應(yīng)用程序中的所有其他小部件都是按照服務(wù)器的方向動態(tài)放置的,服務(wù)器會向下發(fā)送指令流,例如“在選項卡 2、第 4 行、第 3 列中,放置一個 Entry 小部件”等等。需要明確的是,應(yīng)用程序?qū)⑹姑總€ TabItem 成為一組垂直 Box 小部件,每個小部件將包含一組水平框。將其視為一個參差不齊的網(wǎng)格,不嘗試在每個選項卡中排列列。我的困惑是:當(dāng)我從服務(wù)器收到指令時,我可能(通常會?。┍仨殧U展 TabItem 上的 VBox 和/或所選 VBox 中的 HBox。因此,我想轉(zhuǎn)到 TabItem 并詢問它已有多少個 VBox,然后根據(jù)需要附加一些 VBox,對于該垂直 Box 中的水平 Box 也是如此。但我不知道如何問這個問題。給定選項卡編號,到達(dá) TabItem 并不難:tc.Items[tabNumber] 可以幫助我,并且我可以使用 tc.Items[tabNumber].Content 到達(dá)內(nèi)容。問題是,我知道內(nèi)容是一個盒子,我(通常)想添加到它。但編譯器無法忍受我的強制轉(zhuǎn)換嘗試:aBox := widget.Box(tc.Items[thing.about.page].Content) //Trust me, it is one. Really.
//and now I can append as needed to this aBox. Except the line above doesn't compile.編譯錯誤是有道理的;這大概不是一個合理的演員陣容。在C++中,我會打破dynamic_cast并且沒問題。作為 Go 新手,我不知道如何管理同等內(nèi)容。我知道我可以在側(cè)面放置一組地圖來放置我的盒子;嚴(yán)格來說,我不需要詢問選項卡容器它們包含什么,因為我可以單獨跟蹤它們。但這感覺不對;我正在復(fù)制費恩已經(jīng)擁有的知識,如果我知道如何挖掘它就好了。當(dāng)我從服務(wù)器收到開始刪除某些小部件的命令時,我將進(jìn)行大量并行工作,管理選項卡容器和我的地圖。優(yōu)雅的解決方案是什么?
1 回答

手掌心
TA貢獻(xiàn)1942條經(jīng)驗 獲得超3個贊
您需要以這種方式斷言類型: myBox := tc.Items[thing.about.page].Content.(*widget.Box)
- 1 回答
- 0 關(guān)注
- 171 瀏覽
添加回答
舉報
0/150
提交
取消