一、回顧
使用qt2年多了,但是還是覺得很陌生,總是會被qt搞的很緊張,有時(shí)候當(dāng)我自信滿滿的打開幫助文檔,搜索某個(gè)已知的類時(shí),由于筆誤敲錯(cuò)了一個(gè)字母而出現(xiàn)了另外一個(gè)類,不過奇怪的是還真有這么一個(gè)類,哎?。?!我怎么都不知道呢!看來qt的東西還真不是一般的多,隨便一個(gè)筆誤都可能發(fā)現(xiàn)新的東西。特別是qt現(xiàn)在已經(jīng)發(fā)布了qt5.7版本,相對于qt4的時(shí)代那真是天差地別,就我個(gè)人而言,我現(xiàn)在用的是qt5.6.1-1,因?yàn)閝t5.6版本官方聲稱維護(hù)2年的時(shí)間。qt5.6取消了webkit模塊,如果需要使用可以自行編譯,我自己也對qt5.6.1-1的整個(gè)模塊進(jìn)行了編譯,有需要的小伙伴可以參考msvc2013編譯qt5.6源碼
本文主要是想講述qt的一個(gè)代碼書寫方式,當(dāng)然了這樣說有些大,其實(shí)就是qt他的源碼在分層上是把成員都單獨(dú)拉到一個(gè)filename_p.h的頭文件里,這樣做的有好處也有壞處,下面是我自己的觀點(diǎn):
優(yōu)點(diǎn) | 缺點(diǎn) | |
qt |
1、龐大的代碼容易管理 2、成員的私有實(shí)現(xiàn)和具體對外開放的接口分離 |
1、閱讀性差 2、可擴(kuò)展性差 |
表1 qt優(yōu)缺點(diǎn)
上述缺點(diǎn)都是我個(gè)人認(rèn)為,其中可擴(kuò)展性差不是說qt不能擴(kuò)展,而是擴(kuò)展的時(shí)候有一定限制,因?yàn)閝t的一個(gè)功能實(shí)現(xiàn)的最基本單元就是filename.h、filename.cpp和filename_p.h,通常情況下我們只能拿到filename.h,而私有的filename_p.h文件拿不到,所以不能進(jìn)行對齊進(jìn)行擴(kuò)展,這也導(dǎo)致了一些操作不能很好的而進(jìn)行,除非qt源碼給我們了相關(guān)接口,否則我們是很難去維護(hù)私有的filename_p.h的實(shí)現(xiàn),比如:qt的qcharts模塊,這個(gè)模塊是qt5.7才正式開源的模塊,當(dāng)然了有興趣的同學(xué)可以自己手動在自己的當(dāng)前qt模塊下編譯qtcharts,然后將開發(fā)所需要的庫都加入到自己當(dāng)前的qt版本中。
為什么說提到qcharts模塊呢,是因?yàn)槲抑翱催^大概的實(shí)現(xiàn)原理,他也是一貫的qt代碼作風(fēng),那就是不容易閱讀,每一個(gè)對外暴露的接口,僅僅是接口而已,而他具體的實(shí)現(xiàn)都是隱藏在另外一個(gè)沒有暴露給用戶的接