作者Arton0306 (Ar藤)
看板C_and_CPP
標題[問題] 寫gui的程式碼架構
時間Wed Dec 28 15:49:34 2011
目前寫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: 203.192.162.252
※ 編輯: Arton0306 來自: 203.192.162.252 (12/28 15:51)
推 ables:不知道QSignalMapper有沒有符合你的需求 12/28 17:41
推 chchwy:我記得可以用第二個寫法歐 12/28 20:02
→ buganini:純推GTK3 builder,他不產生code,而是吃xml檔 12/28 22:39
→ buganini:直接生出畫面,再用widget id去抓回來做進一步操作 12/28 22:39
→ buganini:有點寫網頁的感覺了,QT系應該也有吧qtdesigner? 12/28 22:40
推 Bencrie:GtkBuilder GTK-2.12 之後就有了,很方便 XD 12/28 22:44
→ buganini:不過qt我沒用過XD 我po一下之前整理的gtk歷史好了.. 12/28 22:47
→ buganini:我說錯了 qt好像沒有 我原本以為musescore是這樣動的XD 12/28 23:09
→ buganini:另外,gtk自動計算元件大小的功能也非常方便 12/28 23:10
→ buganini:就切格子切好之後可以設定那些格子要自動擴張 就完成了 12/28 23:11
推 chchwy:Qt也是產生xml檔阿 人家在問Qt你回一堆gtk 12/29 00:03
→ Arton0306:謝謝大家 C大沒關系啦XD 概念上一樣就好 12/29 00:32