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