看板 C_and_CPP 關於我們 聯絡資訊
整理一下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)
Bencrie:推 ... 我想你說的 bug 應該是寫入順序的問題對吧 XD 12/29 00:53
buganini:寫入順序? 我遇到的是grid的row/column會算錯或不能加 12/29 04:05
buganini:不過顯示跟xml是對得起來也應該是正確的 12/29 04:06
Bencrie:Adjustment 的預設數值和極限值寫入順序反了,GtkBuilder 12/29 08:39
Bencrie:在建 UI 的時候應該先設定最大值再設定預設值 12/29 08:41
buganini:找不到你說的設定耶? 我是用glade 3.10.2 12/29 14:38
Bencrie:像 SpinButton 那種可以綁 Adjustment 的 widget 12/29 21:55
Bencrie:Adjustment 可以調最大最小值和預設值,不過預設值就算設 12/29 21:56
Bencrie:了還是會變成 0,要自己去把 xml 裡的順序換掉才正常。 12/29 21:57
Bencrie:也許新版把這個 bug 修掉了也說不定 XD 12/29 21:57