QT3和QT4的差異及代碼轉(zhuǎn)換方法_第1頁
QT3和QT4的差異及代碼轉(zhuǎn)換方法_第2頁
QT3和QT4的差異及代碼轉(zhuǎn)換方法_第3頁
QT3和QT4的差異及代碼轉(zhuǎn)換方法_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、QT3 和QT4的差異和轉(zhuǎn)換作者郵箱: Designer中的區(qū)別1) Qt3 到QT4 控件名稱發(fā)生了一些變化, 如:Qt3 ListBox+ IconView 相當(dāng)于QT4 的QListWidget;Qt3 ListView 相當(dāng)于 QT4中的 QTreeWidget;QT3 Tabele 相當(dāng)于 QT4 中的 QTableWidget;另外 QT4有基于MODEL和ITEM之分。2) QT3 到QT4 控件外形發(fā)生了一些變化,如: DateTimeEidt 控件,QT3用DateEdit和TimeEdit簡(jiǎn)單組合,QT4中將兩者合成一體。3) Qt4和Qt3

2、界面操作方法上有了一些變化,如: 添加一個(gè)控件,Qt3單擊添加一個(gè)或者雙擊批量添加,Qt4采用拖放操作。 Qt3 ctrl+T 進(jìn)行運(yùn)行測(cè)試,Qt4 ctrl+R4) Qt3中一些功能在Qt4中已經(jīng)廢除,如: Qt3中可以添加槽函數(shù),并將信號(hào)關(guān)聯(lián)到自己添加的槽函數(shù),uic后槽函數(shù)為虛函數(shù), 留給用戶重寫。 Qt3 中可以添加C+代碼的.h和.cpp文件,無需在VC中添加。5) Qt4中很多新功能, 如: 屬性編輯器有過濾功能; Qt4具有強(qiáng)大rcc資源編譯器的功能,可以將圖片,文件等等加入資源qrc中,用rc 編譯。6)Qt3中QLabel設(shè)置背景的方法:SetPaletteBackgroun

3、dPixmap在Qt4中變成為setPixmap7) QHBox這種類沒有了,都需要改用QHBoxLayout來布局。就是先new一個(gè)QWidget出來,然后用這個(gè)Widget的setLayout方法來加入Layout。8) QApplication的setMainWidget方法沒有了,不需要手動(dòng)設(shè)置主窗口部件,似乎自動(dòng)就設(shè)置好了。9) QWidget中的setCaption()方法改成了setWindowTitle()。10) QDialog的構(gòu)造函數(shù)有變化,不再有QDialog(QWidget *, const char*)這種形式的構(gòu)造函數(shù)了。11) QLineEdit類的isOn()

4、方法改成了isChecked()。12) QAsciiDict在Q3Support庫中變?yōu)镼3AsciiDict,在Qt4中由QHash代替,Q3AsciiDictIterator由QMultiHash代替13) Q3Button變?yōu)镼AbstractButton,Q3Button:drawButton(QPainter*)由QWidget:paintEvent()實(shí)現(xiàn)14) setPixmap()由setIcon()代替15) Q3ButtonGroup由Qt4中QGroupBox代踢16) Q3Cache由Qt4中QCache代替17) Q3中QPalette由3個(gè)QColorGroup對(duì)

5、象組成,在Qt4中使用QPalette代替QColorGroup,The new QPalette still works in terms of color groups, specified through enum values (QPalette:Active, QPalette:Disabled, and QPalette:Inactive). It also has the concept of acurrent color group, which you can set using QPalette:setCurrentColorGroup().18)Q3Dict在Qt4中使用

6、QHash和QMultiHash20)Q3Header變?yōu)镼HeaderView21)QIconFactory在Qt4中被QIconEngine代替22)QIconSet由Qt4中的QIcon代替23)QImageDrag由Qt4中的QMimeData代替,使用QMimeData:setImage設(shè)置圖片24)Q3MainWindow由QMainWindow代替25)QMemArray,QPtrVector由Qt4中的QVector代替26)Q3MimeSourceFactory由Qt4的Resource System代替27) Q3MultiLineEdit在Qt3中繼承自Q3TextEdi

7、t,在Qt4中由QTextEdit代替28)QPtrList, QPtrListIterator, QPtrListStdIterator在Qt3Support庫,在Qt4中用QList或QLinkedList代替29) Q3ValueList轉(zhuǎn)換為QLinkedList30)QPtrStack在Qt4中由QStack代替,removepop,currentop31)在編譯后生成的ui_xx文件中,如果沒有成員變量的話可以再Designer中將其屬性去掉即可32)Qt3中關(guān)于圖片加載問題,可以在Qt4中通過Qt Resource System來解決。33)QWorkspace由QMdiArea

8、來代替 Pro文件的區(qū)別1) 變量發(fā)生了變化 ui文件添加INTERFACES +=變成 FORMS+=; 資源文件添加IMAGES += 變成 RESOUCES+= 庫文件添加 LIBPATH 變成 QMAKE_LIBDIR 框架發(fā)生了很多變化1) 一些類已經(jīng)廢除,如: QCString ,還記得QString:setCodecForCString, 主要是為了設(shè)置Q3CString類中的文 字的編碼格式。 Q3PointArray, QMimeSource(用來加載圖片資源), QPtrList(Qt3中沒有QList,只能 保 存指針類型),QStrList 2) 一些類名稱發(fā)生了改變,

9、如: QIconSet 改名為QIcon, QWorkSpace 改名為QMdiArea。QPopupMenu 變成 QMenu。3) 一些類的功能發(fā)生了分離,如: Qt3的QPainter 類到Qt4中分成QPainter和QPainterPath,如moveTo, lineTo等已經(jīng) 放入到QPainterPath,中處理。4) 一些類功能發(fā)生了合并,如: QColorGroup+QPalette合并為QPalette.5) 類的接口發(fā)生了改變,在許多類中有很多Qt 3 support members,就是原來Qt3的接 口功能,Qt4中已經(jīng)廢除了,只不過為了兼容Qt3還保留或者恢復(fù)了一些

10、。6) 類的繼承關(guān)系發(fā)生了很多的變化,如: QThread Qt3中從 Qt(在Qt4中改成了了namespace)繼承,Qt4中從Object 繼承,因此可以在QThread中直接使用信號(hào)和槽。 Qt的變化給Qt3轉(zhuǎn)換Qt4帶來的影響1) 類和接口等名稱的改變使得轉(zhuǎn)換后的代碼有很多類、接口、枚舉等等找不到,具體解決方法:用Qt4重寫代碼、用Qt 3 support 的暫時(shí)代替。2) Qt 3 support 的接口在Qt4中通常是調(diào)用已經(jīng)實(shí)現(xiàn)的Qt4的接口來實(shí)現(xiàn)的,和Qt3的實(shí)現(xiàn)方式存在一些區(qū)別。因此通常會(huì)出現(xiàn)一些和以前程序效果不一樣的地方。3) Qt在實(shí)現(xiàn)同一種功能的時(shí)候往往會(huì)提供多種處理

11、方案。比如: 實(shí)現(xiàn)QTableWidget右擊菜單,可以繼承下來重寫contextMenuEvent虛函 數(shù),或者直接用addAction接口添加右擊菜單菜單項(xiàng),無需麻煩繼承; 處理一個(gè)QWidget對(duì)象的mousePressEvent事件的時(shí)候可以繼承下來處理,也可以用 QObject 提供的intallEventFilter接口交個(gè)另外一個(gè)對(duì)象處理,這樣也無需麻煩繼 承; 在QMenu中添加了許多QAction,要獲取QAction的響應(yīng)槽函數(shù)可以對(duì)每個(gè) QAction的void triggered(bool checked = flase)信號(hào)進(jìn)行關(guān)聯(lián),也可 以對(duì)QMenu的void t

12、riggered(QAction *action)信號(hào)進(jìn)行關(guān)聯(lián),進(jìn)行統(tǒng) 一的處理。 用不同方式實(shí)現(xiàn)會(huì)使得程序的結(jié)構(gòu)不一樣,因此可以自己選擇來更好的優(yōu) 化代碼的結(jié)構(gòu)。Qt3轉(zhuǎn)Qt4后有很多方式可能已經(jīng)不再支持,這樣要徹底 轉(zhuǎn)換就必須修改大量代碼來改變程序的結(jié)構(gòu)。 Qt3轉(zhuǎn)Qt4的經(jīng)驗(yàn)總結(jié)1) 轉(zhuǎn)換工具:用Qt4自帶的Qt3To4轉(zhuǎn)換工具進(jìn)行Qt3轉(zhuǎn)Qt4,目前還未發(fā)現(xiàn)其它轉(zhuǎn)換工具。2) 無ui文件的project的轉(zhuǎn)換,主要是一些動(dòng)態(tài)或靜態(tài)庫的轉(zhuǎn)換。對(duì)于Qt4的程序是不可以直接調(diào)Qt3的庫的,如:Qt3庫的某個(gè)接口的返回值為QString,那么Qt4是無法獲取該變量的值,因?yàn)镼t4和Qt3在實(shí)現(xiàn)

13、上內(nèi)部?jī)?nèi)存分配方式是不一樣的。具體轉(zhuǎn)換過程如下:a) 打開控制臺(tái),將目錄設(shè)置到工程目錄下,用qt3to4工具,具體如:qt3to4 ,提示一些文件將會(huì)轉(zhuǎn)換,選擇all(全部轉(zhuǎn)換),將會(huì)產(chǎn)生一個(gè)portinglog.txt的移植日志文件,里面詳細(xì)記錄了所有文件被修改的情況。b) 用qmake tp vc 生成VC工程,可以看到代碼中多了一些注釋:/Added by qt3to4: 另外在Pro文件中多了:#The following line was inserted by qt3to4QT += qt3support等等, 這些主要是轉(zhuǎn)換后的程序用了很多Qt4提供的

14、兼容Qt3的一些類、接口等等。要想不使用這些兼容的功能只能手動(dòng)修改成純Qt4的代碼。c) 修改其它一些錯(cuò)誤,主要是Qt4不兼容Qt3的一些代碼。3) 帶ui文件的project 的轉(zhuǎn)換:首先要說明Qt4有兩種ui文件的編譯器程序:uic和uic3,uic是Qt4的ui編譯器,uic3是保留的Qt3的ui編譯器。如果采用無ui文件的project的轉(zhuǎn)換的方式,將會(huì)在pro文件中發(fā)現(xiàn),如:#The following line was changed from FORMS to FORMS3 by qt3to4FORMS3 += qt3test1.ui#The following line was

15、 inserted by qt3to4QT += qt3support #The following line was inserted by qt3to4CONFIG += uic3可以看出這種轉(zhuǎn)換方式轉(zhuǎn)換后的程序的界面仍然是Qt3的界面,不能滿足移植的目的需求,因此要先把ui文件先轉(zhuǎn)成Qt4的ui文件。具體轉(zhuǎn)換方法有如下2種:a) 用 uic3 convert qt3test1.ui qt4test1.ui ,再將轉(zhuǎn)換后的 ui名稱改成和原來一樣的。b) 直接用Qt4的Designer打開文件,提示文件將會(huì)從Qt3轉(zhuǎn)為Qt4,確定后直接保存該文件就可以了。Ui文件轉(zhuǎn)化好后再用qt3to4工具進(jìn)行轉(zhuǎn)換,打開pro 文件,照樣可以看到:#The following line was changed from FORMS to FORMS3 by qt3to4FORMS3 += qt3test1.ui#The following line was inserted by qt3to4QT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論