Re: [問題] 寫gui的程式碼架構
整理一下Glade跟GtkBuilder的歷史:
1) glade2的時代,產生C code呼叫gtk2的api
2) glade3<=3.8,還是用gtk2,但不產生code,
而是用libglade吃.glade並自動呼叫對應的gtk2 api,
如此得到容易跨語言的特性,並有VC分離的好處。
3) gtk2.12開始內建GtkBuilder,功能等同於libglade,並會在未來取代libglade,
但GtkBuilder跟glade的xml結構不一樣,可用gtk-builder-convert把.glade轉成
GtkBuilder的結構(extension通常就只是用.xml)
4) glade3>=3.10,改用gtk3(的元件),並支援直接儲存成GtkBuilder的xml
不過glade3最新版我用起來還是有些bug,偶爾需要手動改xml,還好讀回去是ok的;)
最近是用來寫這個(python寫的)
https://github.com/buganini/gbsdconv
不過code很亂,請小心服用XD
※ 引述《Arton0306 (Ar藤)》之銘言:
: 目前寫gui時常遇到一個問題
: 我現在以qt撰寫,用designer畫好ui之後
: 假設現在大視窗中有幾個部份(widget)
: 而某些事件會使得這些widget有些改變或者是widget中的某些地方改變
: 所以function的命名可能會變成下面這樣
: updateCheckedStateInWidgetXXX
: updateCheckedStateInWidgetYYY
: updateCheckedStateInWidgetZZZ
: clear123InWidgetYYY
: clear456InWidgetZZZ
: 也就是說如果不寫Widget名稱,很難看出這個function到底作用在哪個widget
: 加上widget名稱又顯得非常囉嗦
: 比較直覺的寫法應該是
: WidgetXXX->updateCheckedState()
: WidgetYYY->updateCheckedState()
: WidgetZZZ->updateCheckedState()
: WidgetYYY->clear123()
: WidgetZZZ->clear456()
: 但designer直接拉出來的widget沒辦法這樣寫
: 有想過可以自創物件把designer產生的widget ptr傳進去 這樣就可以模擬上方的寫法
: 或者是打從一開始就不要使用designer產生的code
: 請問大家採取的作法是什麼呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.131.149.15
※ 編輯: buganini 來自: 140.131.149.15 (12/28 22:57)
推
12/29 00:53, , 1F
12/29 00:53, 1F
→
12/29 04:05, , 2F
12/29 04:05, 2F
→
12/29 04:06, , 3F
12/29 04:06, 3F
推
12/29 08:39, , 4F
12/29 08:39, 4F
→
12/29 08:41, , 5F
12/29 08:41, 5F
→
12/29 14:38, , 6F
12/29 14:38, 6F
推
12/29 21:55, , 7F
12/29 21:55, 7F
→
12/29 21:56, , 8F
12/29 21:56, 8F
→
12/29 21:57, , 9F
12/29 21:57, 9F
→
12/29 21:57, , 10F
12/29 21:57, 10F
討論串 (同標題文章)