看完 C++ 課本能否直接上手 Qt?

簡單建了一個Qt小程序(Hello World),發現只能比著教程上寫幾行代碼(因為我連各種控制項的類名都不知道…),感覺敲出來的程序不屬於自己的一樣(直接用人家的類庫寫,而且也不知道人家是如何實現的…)。那麼,問題來了,我是不是應該滾回去好好看看C++primer和數據結構,Qt什麼的以後再說?(我確實想學有一下UI啊…)


相信我,「感覺程序不是自己的」太正常了,咬牙繼續搞。

如果覺得自己C++不好(比如搞不清析構函數的行為,比如泄露內存滿天飛),去看Primer或者Primer+;如果僅僅是類庫不會用,不要去看C++,繼續看Qt。就算你把Primer背下來那些類庫也一樣不是你的。

就我個人的體驗(當然我很菜),和學校里照本宣科照貓畫虎不一樣,大部分的實戰情況是要「面向文檔編程」的,或者「面向StackOverFlow/GitHub編程」的。在這種情況下,你永遠不會在一開始就能「領會」一個框架或是類庫或是其他,系統地看書學習不會有什麼明顯助益;只有不斷地實踐與思考才能增長你在這一方面的真才實學。一定說在學Qt之前要看什麼書的話,我唯一想推薦的是《Design Patterns》。但這本書又是不實踐就不知所云的典型代表。

所以還是去code吧;面對腦洞大開的需求,做出一個可以用的小程序;面對不知道該怎麼寫才科學的設計難題,想出一個可用還好寫的pattern;在不斷Google的過程中,增長自己的自學能力,上手速度和英語水平(誤)……

看源碼也很重要,不過要放到你真的感興趣的時候,放到你已經很熟悉它的行為的時候。那時候你才會在作者寫意地解決掉某個問題的時候拍桌:「卧槽,這個設計碉堡啦!」


寫代碼不用多想先後的問題,多想想倒是真的蠻重要的。

光想還是不夠,最好能夠把實踐中的問題記錄下來,總結一下,寫成筆記、博客……

另外學Qt的話可以看看http://www.devbean.net/2012/08/qt-study-road-2-intro/

這個博客系列的內容很多是從一本Qt書上借鑒的,不過也有很多是作者自己的原創。寫得比較有條理。可以看這個入門。

另外,Qt本身的文檔是非常豐富的。Qt的示例要看一遍。

找一個順手的IDE也非常重要,Qt CreatorKDevelop都比較不錯,可以在裡面直接查Qt的文檔。

另外,Qt的源碼也可以擇一些重要的部分看看。


同為Qt初學者....

記得剛開始學的時候面對Qt工程代碼感覺好龐大好亂= =,課本上面向過程的小程序和真正的工程代碼差太多了。

後來數據結構課程設計想做一個圖形界面,於是找來本Qt教材,比著書上的樣例代碼改,一晚上的功夫就搞定啦。而且在改代碼的過程中才真正理解了信號與槽,還有許多面向對象的概念

Qt自帶文檔也是一個大寶庫,直接現用現查就好~

當時基友推薦的這本書:Qt5開發及實例(http://book.douban.com/subject/25884596/)

感覺還不錯


完全能,用Qt Creator拖拖控制項,實踐Qt官方文檔里文本編輯器/Tetris之類的例子,做簡單的GUI出來沒問題。

初學者想做GUI的心情也完全情有可原,整天在黑框框里折騰數據結構,覺得煩躁很正常。。編程就是要做好玩的東西嘛。


現階段沒有必要去關心qt底層的實現,關注你自己的代碼邏輯就好。你以後也不大可能寫或者維護一套gui庫,除非特別感興趣,會用就得了唄。

還有你的教程可能有些問題,建議到官網http://qt.io找教程。那上面有針對每個控制項的例子,不只是幾行代碼了。


Qt只是一套C++庫,它和C++本身的關聯性並沒有那麼強。

你可以看到,很多C++的玩法在Qt里行不通(比如模板、宏和Q_PROPERTY的配合)。在Qt中,C++只剩下一個子集(基於對象,少量的泛型。介面虛函數什麼的很多都可以直接上信號-槽)。

你如果想學會使用Qt,就應當專註學習如何使用Qt而不是C++,弄明白Qt中那些封裝好的庫應該如何去用,重新由淺入深的記一些封裝後的概念和使用方法;就像你學習Android開發,其實並不需要對Java了解到多麼多麼的深入一樣。

如果你想研究Qt是如何實現的,那就是另一個話題了。


初學的時候不用太關心人家是怎麼實現的,多用用、多想想就逐漸知道了。


今晚剛提交了一份大作業,用Qt寫的,啥感想就不說了,內存管理是個坑,還沒填好。但qt這東西真心隨時可以上手,周圍有同學沒學C++也照樣上手,用qt寫過簡單的UI。其實沒什麼好說的,馬上去學都行,遇到問題就去百度或者翻書,還能鍛煉你清晰表述問題的能力,鍛煉自學能力和對新知識的接受能力。

qt入手寫UI的時候有兩種選擇,一種是用quick的方式,我不太了解,因為這種方式是處理一個叫ui的變數(或者是類?不關心),然後可以用拖控制項的方式生成界面。我感覺亂就沒採用這種方式,剛上手就採用了第二種方式:直接建立「空的Qt工程」,平地建高樓。感覺不錯,一切掌控在自己的想法中,不過對代碼質量很有考驗。

我是剛學完C++的小學期之後就開始用Qt,因為大作業要用。給你個ddl,相信你也能「7天速成」、「3天速成」什麼的。對了,直接用Qt creator寫吧,不要裝到VS上(當然看自己選擇了),這樣可移植性有保證,linux也能跑。Qt creator軟體的最好的下載地址為:http://www.qt.io/download-open-source/#section-6

  • Qt 5.4.0 for Windows 32-bit (MinGW 4.9.1, 852 MB) (info)

不過學UI可以考慮用C #也不錯,我以前最初就是用C#,感覺很和諧,沒有指針,出錯的概率便小了。但C#的信號交互沒有Qt來得更加自然流暢。但是C#也有很多科學合理的地方,比如介面、屬性、partial什麼的,就不贅述了。我接觸C#時還沒學C++,嗯。。。

總之,學習這東西。。。都是自學(拖延症晚期狗只能自學一切)


個人建議不要看譚的書,然後看C++ primer,然後上Qt


寫多了就會了。。其實Qt與MFC啥的相比,還是蠻不錯的——起碼簡單多了。。。IDE沒人推薦VS么。。可以裝一個Qt插件,這樣就能舒服的寫Qt Project了。。


Qt是一套使用C++實現的UI庫,因此要想使用Qt,起碼要有一定的C++基礎,然後就是要去了解Qt的設計理念,你需要知道一個基本的Qt程序由哪些部分組成,Qt中包含哪些常用的控制項,這些控制項的層級關係是什麼。大概知道這些東西後,可以開始設計一個簡單的UI應用,然後看看這個UI應用中的元素分別對應Qt中的哪個控制項類,理清楚這些後,再試著把它們組裝起來。不積跬步 無以至千里,建議從簡單的開始,慢慢地過渡到複雜的UI應用。Qt的文檔比較詳細,在這個過程中一定要多翻閱,多學習,多理解。相信只要邁出艱難的第一步後,後面就是一馬平川。


不知道你的英語怎麼樣,要是還可以的話(四級的水平),直接看官方文檔,和給的一些參考案例,分析分析各個模塊是怎麼組合的,基本上就差不多了!


我讀書時是在嵌入式里用彙編編程的,學過一點C。

後來項目需要是邊學著用Qt邊學的C++。


C++還是應該多了解一些,多寫程序。之後可以學習Qt,我最近也在學習Qt,還是要多練習,我之前C++學了很長時間,也學習了MFC,很多在MFC中寫過的代碼,如果將與顯示等無關的東西封裝好了,直接可以在Qt下用,很方便!下面是我在Qt下寫的音樂播放器,可以參考 http://blog.csdn.net/u012027907/article/details/42614813


你就算把C++標準全讀通,演算法導論、TAOCP刷上N遍,你也不會知道Qt是怎麼實現的


應該可以,先了解下指針,然後學這本《C++ GUI Programming with Qt 4》


0.0官方文檔很不錯的,看那個就好


把代碼敲出來就行了,沒個寫幾十萬行代碼想學會就太難了。


推薦閱讀:

C++IO標準庫 能否非入侵的修改<< >>操作符的行為?
為什麼用C或C++表達Windows COM技術那麼複雜呢?是C或C++缺少什麼嗎~
Qt編程可不可以結合其他的第三方庫和本土API?
為什麼代碼中的comp函數只需返回0就可以表示兩串相同?
如何看待微軟自己的產品不用自己的庫寫而用Qt寫?

TAG:程序員 | QtC開發框架 | C |