淺談Qt與C++的關係

1.Qt簡介

什麼是Qt呢?在Qt官網對於Qt的解釋是這樣的

Qt is a full development framework with tools designed to streamline the creation of applications and user interfaces for desktop, embedded, and mobile platforms.

字面意思就是它是一個完整的開發框架,其內在的工具旨在簡化桌面、嵌入式和移動平臺的應用程序和用戶界面的創建。
在百度百科上對Qt的介紹是這樣的,重點是簡介其作爲基於C++的面向對象的框架

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-r1OvbsC1-1584091542584)(Qt%E4%B8%ADQML%E4%B8%8EC++%E7%9A%84%E4%BA%A4%E4%BA%92.assets/qt.png)]

2.Qt與C++

從C++的角度分析Qt,我們會發現,Qt通過內省數據的機制,實現了與許多現代語言的交互特點,這是通過使用Qt中的基礎類QObject來實現的,在Qt中,通過內省數據傳遞值原數據再至類運行的運行維護方式,構建了整個運行流程。原生的C++是不會完成這些事情的,所以Qt更方便了動態查詢對象信息以及屬性。

在Qt中最大的特點就是信號與槽的機制,Qt使用源對象信息實現了信號與槽的回調綁定。每個信號能夠連接任意數量的槽函數或者其它的信號。當一個信號從一個對象實例從發送後,會調用連接信號的槽函數。發送信號的對象不需要知道接收槽對象的任何信息,反之亦然。這一機制可以創建複用性非常高的組件,並減少組件之間的依賴。

Qt中的內省特性也用於創建動態屬性的綁定,QML是一種描述性的腳本語音,以JavaScript語言作爲主要編程控制。通過內省特性使得QML可以調用暴露的C++對象實例,並且可以從JavaScript中調用C++函數。除了綁定Qt C++, 綁定標準的JavaScript也是一種非常流行的方式,此外還有Qt對於其他語言的的綁定,如對Python的綁定,叫做PyQt。

3.Qt的跨平臺應用

基於C++的Qt擁有一切C++的特性,在Qt中也可以使用C++開發跨平臺的應用程序,Qt C++在不同的操作系統上提供了一套平臺抽象,允許開發者專注於手上的任務,不需要你去了解如何在不同的操作系統上打開一個文件。這意味着你可以在Windows,OS X和Linux重複編譯相同的代碼,不用去過份考慮不同平臺上的適配問題,Qt會自動幫你解決這些。最終保持本地構建的應用程序與目標平臺的窗口風格上看起來一致。隨着移動平臺的桌面更新,Qt也提供相同的代碼在不同的移動平臺上編譯,例如IOS,Android,Jolla,BlackBerry,Ubuntu Phone,Arm等。這樣不僅僅是代碼可以重用,開發者的技能也可以重用。由於Qt的這些特性,讓的瞭解Qt的團隊比只專注於單平臺特定技能的團隊可以接觸更多的平臺,也因爲Qt的靈活性,團隊可以使用相同的技術創建不同平臺的組件。

關於編碼的問題。對於所有平臺,Qt提供了一套基本類,例如支持完整unicode編碼的字符串,鏈表容器,向量容器,緩衝容器。它也提供了目標平臺的通用主循環抽象和跨平臺的線程支持,網絡支持。Qt的主旨是爲Qt的開發者提供所有必須的功能。對於特定領域的任務,例如本地庫接口,Qt也提供了一些幫助類來使得這些操作更加簡單。

4.寫在最後

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UUzb2L0h-1584091542585)(Qt%E4%B8%ADQML%E4%B8%8EC++%E7%9A%84%E4%BA%A4%E4%BA%92.assets/no%20picture%20say%20jb.gif)]
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章