作者:華清遠見武漢華嵌中心 金牌講師 李家凱 1、 QT3 在QT3中,用designer設計好界面后,使用uic來根據界面生成代碼文件,QT3的uic可以自動生成.h和.cpp文件,假設你在制作一個名叫DemoDlg的對話框,生成文件名為DemoDlg.ui的ui文件,那么 QT3的uic生成的文件則是DemoDlg.h和DemoDlg.cpp,具體的命令如下: # uic DemoDlg.ui -o DemoDlg.h # uic DemoDlg.ui -i DemoDlg.h -o DemoDlg.cpp 所有的界面初始化工作都在cpp文件中執行,控件的定義在h文件的類中聲明,之后程序的邏輯代碼(包括信號與槽的連接)也將加入這個文件,那么對于一個已經完成邏輯功能的對話框來說,如果要修改界面布局,你就不得不重新用uic生成.h和.cpp文件,然后將其中界面相關的代碼復制到你已經修改的文件中,此時決不能直接用uic直接生成到修改過的文件上,因為那樣你的代碼將全部被覆蓋掉。 2、QT4 在由ui文件生成h文件方面,QT4改進了,QT4中推薦的方法是,使用uic根據界面文件生成一個h文件,以前面的DemoDlg為例,生成的文件叫做ui_DemoDlg.h,在控制臺執行命令為: # uic DemoDlg.ui -o ui_DemoDlg.h ui_DemoDlg.h中會實現一個名為Ui_DemoDlg的類,包含了界面所有控件的加載功能,而程序的邏輯功能依然使用DemoDlg.h和DemoDlg.cpp這兩個功能,并在DemoDlg.h中用多重繼承的方法,從剛才的Ui_DemoDlg類來繼承出實際的DemoDlg類,在DemoDlg的構造函數中,只需要使用setupUi()方法,就可以構建出整個界面,并且由于是從Ui_DemoDlg繼承來的,在邏輯代碼中也可以方便的訪問所有控件,當然Ui_DemoDlg類中控件的權限為public最好了。 由此看來,QT4的方法是個巨大的進步,因為ui_xxx.h中不再包含任何用戶自己寫的代碼了,此時你想更改界面布局的話,只需要用designer修改界面,再用uic生成ui_xxx.h文件,直接替換原文件就可以了。這樣就不會因為界面的改變而迫使你修改xxx.h和xxx.cpp了。 轉自:http://www.embedhq.org/html/jsbw/2010/0309/331.html |