Qt中使用的C 知識和技能 你必須要了解的

2022-06-28 23:06:21 字數 1472 閱讀 7341

如果你不確定在使用qt程式設計時自己所掌握的c++知識是否夠用,這一節的內容會幫到你。這裡給出了qt自身以及在使用qt進行程式設計時涉及到的c++知識,因此,通過閱讀本節,你會了解你是否缺少一些c++技能。

如果你想對這裡提到的c++特性做進一步的了解,我們推薦你看gregory satir和doug brown撰寫的《c++:the core language》,該書由o』reilly出版。這本書重點講解了c++語言最為重要的部分,並且涵蓋了本節提到的所有內容。

當然的,qt中使用到了類-qt是乙個類庫。你需要知道某個類的成員函式的用法。而且,你需要掌握怎樣寫你自己的類,以及怎樣繼承乙個已經存在的類,從而產生乙個新的類。不過,你無需成為擅長類的等級設計的高手。對於gui 程式設計,在這裡我們會提供足夠豐富的資訊來幫助你構建自己的知識體系。

qt中大量的使用了訪問方法,它們用來得到或者設定類的私有變數的值。儲存方法通常以set...這樣的型式出現(例如,settext()),而獲取方法則不帶有任何字首(甚至沒有get-,例如,text())。在qt中,這是乙個基本的東西(慣例,譯者注);沒有複雜的東西在裡面。

qt中使用虛函式來通知你的(程式中的)物件,某些低階的事件(就像滑鼠點選、重繪操作那樣的事件)發生了,所以你必須要適應這些函式(的用法)。不像其他的工具包或者類庫,qt主要使用創新的訊號/槽機制而不是虛函式來作為物件間通訊的主要的方法。這個特性對於qt而言至關重要,所以在本書的後面章節中將會介紹它。

毫無疑問,qt中用到了繼承,但是其中最重要的部分是建立在單繼承之上的。多繼承很少用到-實際上,它的使用少到你很可能從來沒有遇到過它。如果你對那個「虛擬繼承」的含義不理解的話,放心吧:qt中根本就沒有用到它。

qt過載了一些運算子,但通常這些運算子只是(在背後)工作而已。舉例來說,你可以把乙個qstring物件賦給某個函式,期望得到乙個const char*,這是由於乙個強制轉換運算子的介入以把你的qstring物件轉換為乙個字元指標。

你不能使用乙個不理解模板或者沒有完全實現模板的編譯器來編譯qt。如果你不想使用集合類,在你自己的**中使用模板就不是必需的。但是模板是非常有用的,所以你還是要盡量的熟悉基本的模板的使用。並且,這個學習起來並不複雜。

qt中經常用到bool資料(對於c++而言,是較新的型別)型別。不幸的是,一些老舊的編譯器不支援bool資料型別,並且也不能識別true和false這兩個關鍵字。這時候,你可以轉而使用qt提供的true和false巨集來替代。在本書中,我們使用true和false,但如果你手頭使用的是那些老舊的編譯器,你需要總是使用true和false代替它們。

qt沒有使用那些尚未被所有編譯器所支援的以及新的c++特性,如名字空間、執行時型別識別(rtti),新的型別繫結等等。qt也不使用標準模板庫(stl),但你可以在自己的qt程式中使用它。

**:

《你必須知道的495個C語言問題》知識筆記及補充

它可以用作一種格式上的提示表明函式的定義可能在另乙個原始檔中,但在 extern int f 和 int f 之間並沒有實質的區別。補充 extern可以置於變數或者函式前,以標示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。此外extern也可用來進行鏈結指定...

移動自動化測試入門,你必須了解的背景知識和工具特性

1.移動網際網路測試背景 隨著智慧型手機的普及和網際網路的發展,移動網際網路已經漸漸成為人們的一種的生活方式。既然是生活方式,那麼對生活品質就會有不斷的提公升要求,就會對所用的移動網際網路產品有更高的體驗需求。這對於測試工程師來說就有了更高的質量保證要求,而時間短,進度快,種類多,使得我們僅靠人工很...

C 中使用ref 和 out 的區別

ref 通常我們向方法中傳遞的是值,方法獲得的是這些值的乙個拷貝,然後使用這些拷貝,當方法執行完畢後,這些拷貝將被丟棄,而原來的值不會受到影響。這種情況是通常的,當然還有另外一種情況,我們向方法傳遞引數的形式,引用 ref 和輸出 out 有時,我們需要改變原來變數中的值,這是我們可以向方法傳遞變數...