Qt開發-確認過眼神

初識Qt

本人硬件工程師一枚,在我開始想通過軟件將公司的硬件電路設計標準化之前,我對Qt並不怎麼了解,只知道她基於C++語言開發應用程序,然而我的C++也很爛,這也是我不去碰MFC框架而轉戰Qt的原因之一,當然這兩者之間的優缺點對比不再細說;Google了一下Qt瞭解到的信息如下:

Qt發展史

  1. 1991年Qt由Trolltech(奇趣科技公司)開發
  2. 2008年Nokia(諾基亞)收購了Trolltech,Qt自然成爲諾基亞旗下編程語言
  3. 2012年Nokia將Qt業務及相關軟件技術出售給了Digia(芬蘭一家軟件公司)
  4. 2013年之後,Digia成立了Qt開發團隊細心培育Qt,2019年12月11日15點49分Digia發佈Qt最新版本爲Qt5.14.0

Qt能做什麼

Qt是一個跨平臺的C++應用程序開發框架,用她可以輕易做出藝術級的圖形界面;Qt 支持跨平臺體現在她可以支持各大主流操作系統(Windows、Linux、Unix、嵌入式系統等);

在這裏插入圖片描述
總的來說Qt用在各類桌面應用程序開發以及嵌入書系統應用程序開發上,比較典型的案例如Linux桌面環境KDE、WPS Office辦公軟件以及谷歌地圖等

Qt商業版和開源版

Qt發行的版本分爲Qt商業版和Qt開源版:商業版專門提供給商業軟件開發使用,在商業有效期內會提供免費升級和相關技術支持服務;開源版開放Qt源碼,開源版提供了和商業版同樣的功能,我們可以認爲開源版是爲了讓Qt更爲主流以及強大其自身所設,但最初其實是爲了解決Linux桌面環境KDE與Qt的商業授權的糾紛才爲Qt增加了GPL開源授權;我們最關心的還是開源版是免費的

爲什麼選擇Qt

以上已間接說明我們爲什麼要選擇Qt,但還是需要總結一下是什麼使Qt對我們有價值而讓我們選擇她:

  1. One framework. One codebase. Any platform(Everything you need for your entire software development life cycle. Qt is the fastest and smartest way to produce industry-leading software that users love.)
  2. The Future Is Written with Qt
  3. Qt video introduction

    Qt平臺介紹視頻

Qt各個版本下載

  1. Qt最新版本:Qt5.14.0;後文使用這個版本(qt-opensource-windows-x86-5.14.0)進行開發,安裝方式很簡單不講解,安裝時不要漏選自己所需要的組件
  2. Qt所有版本

Qt技術願景(來自Qt博客翻譯)

Qt6簡介

7年前,Digia發佈了Qt5,到目前爲止,世界已變化太多;Qt6.0也將準備在2020年底之前首次發佈;Qt6將延續Qt在Qt5系列中所做的工作,Qt6的發佈不會破壞現有用戶(Qt6的目標是與Qt5系列具有高度的兼容性);新的Qt版本將會比Qt5系列擁有更高的自由度來實現用戶的各種功能,會更好的支持當今以及未來的需求;當然Qt5新版本也會繼續迭代開發,但更多的研發重點將轉向Qt6;Qt對其客戶和用戶的核心價值如下:

  1. 它具有跨平臺特性,允許用戶使用一種技術並從一個代碼庫將其應用程序部署到所有臺式機,移動和嵌入式平臺
  2. 其可擴展性從低端,單一用途的設備到高端複雜的桌面應用程序或連接系統
  3. 世界一流的API,工具和文檔,簡化了應用程序和設備的創建
  4. 可維護性,穩定性和兼容性,可輕鬆維護大型代碼庫
  5. 擁有超過100萬用戶的大型開發者生態系統
    Qt新版本會調整Qt以適應新的市場需求,但是上述5項依舊是其工作的核心

臺式機市場是Qt產品的基礎,對Qt來說是強大而重要的市場。這是Qt大多數用戶與Qt首次接觸的地方,並構成了Qt工具的基礎。保持健康和成長是在其他市場也要成長的先決條件
嵌入式和連接設備是Qt最大的增長點。觸摸屏正越來越多地用於設備,但是這些設備的硬件價格承受着巨大壓力。低端芯片組,微控制器以及中小型觸摸屏將在任何地方使用。這些設備中的大多數將具有相對簡單的功能,但需要優美而流暢的用戶界面。Qt6將創建大量此類設備來定位該空間以實現Qt的可擴展性承諾
同時,設備範圍高端的用戶界面將繼續增加複雜性,其中包含數千個不同的屏幕和許多應用程序。將2D和3D元素合併到一個用戶界面中是很常見的,增強現實和虛擬現實的用法也是如此
人工智能元素將在應用程序和設備中更常用,Qt將用簡單的方法來與它們集成

下一代QML

在過去的幾年中,QML和Qt Quick已經成爲推動Qt發展的主要技術,使用這些技術創建用戶界面的直觀方式使越來越多的用戶選擇Qt;但是Qt5所用的QML具有一些怪異和侷限性,所以Qt6將計劃做如下主要更改:

  1. 引入強類型:弱類型使用戶很難對他們的代碼庫進行較大的更改,強類型將允許IDE和其他工具再次熱舞中爲用戶提供支持,並極大簡化代碼的維護;此外Qt將能夠生成更好的代碼以減小系統開銷
  2. 使JavaScript成爲QML的可選功能:使用QML時擁有完整的JavaScript引擎可能會使事情複雜化,並且特別是在針對低端硬件(例如微控制器)時,這是一項開銷。但是,它在許多用例中都非常有用
  3. 刪除QML版本控制:通過簡化QML中的某些查找規則並更改上下文屬性的工作方式,可以消除QML中版本控制的需要。反過來,這將導致QML引擎的大幅簡化,大大簡化Qt團隊維護Qt Quick的工作量,併爲用戶簡化QML和Qt Quick的使用
  4. 消除QObject和QML之間的數據結構重複:當前,在Qt的元對象系統和QML之間有很多數據結構重複,從而降低了啓動性能並增加了內存使用率。通過統一這些數據結構,我們將能夠減少大部分開銷
  5. 避免運行時生成的數據結構:這與之前的觀點有關,在此之前,當前正在運行時生成許多這些重複的數據結構。應該完全有可能在編譯時生成它們中的大多數
  6. 支持將QML編譯爲高效的C++和本機代碼: 通過強大的鍵入和更簡單的查找規則,我們可以將QML轉換爲高效的C++和本機代碼,從而顯着提高運行時性能
  7. 支持隱藏方法細節: 長期以來,“私有”方法和屬性一直要求能夠隱藏QML組件中的數據和功能
  8. 更好的工具集成:我們當前用於QML的代碼模型通常是不完整的,使得重構和在編譯時檢測錯誤很難甚至不可能。通過上述更改,應該可以提供可以與C++語言匹配的編譯時診斷程序,並且可以大大改善重構支持

下一代圖形

從Qt5.0發佈到現在,圖形領域已經發生了很多變化,Qt會對圖形對戰進行重大的更改才能保持競爭力
Qt 5使用OpenGL作爲3D圖形的統一API。從那時起,已經定義了許多新的API。Vulkan是Linux上OpenGL的指定繼任者,蘋果正在推動Metal,微軟擁有Direct 3D。這意味着Qt將來將不得不與所有這些API無縫協作。爲了使之成爲可能,必須定義一個抽象層來抽象圖形API(例如用於平臺集成的QPA),稱爲渲染硬件接口(RHI)。我們將需要在該層之上建立所有渲染基礎結構(QPainter,Qt Quick Scenegraph和3D支持)
一組不同的圖形API也導致Qt必須支持不同的着色語言。Qt着色器工具模塊將幫助我們在編譯和運行時交叉編譯着色器
3D扮演着越來越重要的角色,而當前的Qt產品還沒有統一的解決方案來創建同時包含2D和3D元素的UI。目前,將QML與來自Qt 3D或3D Studio的內容集成起來很麻煩,並且會導致性能開銷。另外,不可能在2D和3D內容之間逐幀同步動畫和過渡
3D內容與Qt Quick的新集成旨在解決此問題。在這種情況下,全新的渲染器將允許一起渲染2D和3D內容,並支持兩者之間的任意嵌套。這將把QML變成我們用於3D UI的UI定義語言,並且不再需要UIP格式。Qt團隊將在Qt 5.14中提供具有3D支持的“新” Qt Quick的技術預覽
最後會爲Qt6帶來一個統一的主題/樣式引擎,這將使我們能夠在Qt Widgets和Qt Quick的桌面和移動平臺上獲得原生的外觀

增強C++ API

Qt5.0基於C++ 98,Qt6將依靠C++ 17來實現,但同時不會失去向後兼容性

發佈了7 篇原創文章 · 獲贊 14 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章