C++界面開發(fā)程序Qt2020年路線圖來了!為開發(fā)者帶來全新體驗(yàn)
Qt是目前最先進(jìn)、最完整的跨平臺C++開發(fā)工具。它不僅完全實(shí)現(xiàn)了一次編寫,所有平臺無差別運(yùn)行,更提供了幾乎所有開發(fā)過程中需要用到的工具。如今,Qt已被運(yùn)用于超過70個(gè)行業(yè)、數(shù)千家企業(yè),支持?jǐn)?shù)百萬設(shè)備及應(yīng)用。
2020年對Qt來說將是激動人心的一年,因?yàn)槲覀兗磳l(fā)布很多優(yōu)秀產(chǎn)品。起點(diǎn)是即將發(fā)布的Qt 5.15 LTS,預(yù)覽版本已可用。為了提高工作效率,我們?yōu)樵O(shè)計(jì)師和開發(fā)者提供了許多新功能。隨著Qt for MCUs的推出,我們擴(kuò)展到全新系列的目標(biāo)平臺。最重要的是,我們將在年底發(fā)布Qt的下一個(gè)重要版本 —— Qt 6。
在深入探討2020年計(jì)劃的新項(xiàng)目之前,我要感謝所有Qt開發(fā)者的貢獻(xiàn)。我們擁有一個(gè)貢獻(xiàn)者眾多的偉大生態(tài)系統(tǒng),多年來提供了許多極有寶貴的貢獻(xiàn),并在未來繼續(xù)塑造Qt。除了那些代碼貢獻(xiàn)者,還有許多活躍在Qt項(xiàng)目論壇、郵件列表、以及評審代碼和測試Qt開發(fā)版本的人們。
從一開始,Qt就是為開發(fā)者打造的框架和工具,而且長期以來,Qt也提供了自己的Qt Creator IDE。早期,我們?yōu)殚_發(fā)者提供了一個(gè)可視化的拖拽式設(shè)計(jì)工具,并作為產(chǎn)品的一部分,但是最近幾年,我們花了很多精力來改善我們?yōu)樵O(shè)計(jì)師提供的產(chǎn)品。那么,讓我們先從設(shè)計(jì)師工具開始介紹Qt的發(fā)展規(guī)劃。
設(shè)計(jì)師工具
去年12月我們在Qt Design Studio中發(fā)布了在2D設(shè)計(jì)工具中加入3D設(shè)計(jì)功能的首個(gè)技術(shù)預(yù)覽版本。目前,我們正在完善即將發(fā)布的Qt Design Studio 1.5,打磨2D和3D集成設(shè)計(jì)的體驗(yàn)。在2020年下半年的后續(xù)版本中,我們將完善Qt Design Studio統(tǒng)一的2D和3D設(shè)計(jì)體驗(yàn)和其他功能。
Qt Design Studio 1.5中改進(jìn)了對Qt Quick 3D的支持,并充分利用了Qt Quick 3D在Qt 5.15 LTS中的所有改進(jìn)。通過添加??縲idget使得可用性得到了改進(jìn)。Qt Design Studio的各種視圖和控制窗口可以在所有顯示器之間自由移動。這使得設(shè)計(jì)師可以創(chuàng)建一個(gè)工作空間,該工作空間能匹配個(gè)人偏好和進(jìn)行中項(xiàng)目的設(shè)置。
全新的UI流設(shè)計(jì)功能帶來了一個(gè)可視化編輯器,用于創(chuàng)建不同的視圖并定義它們之間的交互。這個(gè)需求呼聲很高的功能即使對于復(fù)雜的應(yīng)用程序也可以直觀、快速地創(chuàng)建完整的應(yīng)用程序設(shè)計(jì)。Qt Design Studio 1.5的另一個(gè)重要且備受推崇的功能是支持僅在設(shè)計(jì)和開發(fā)期間可見的注釋。這些注釋允許設(shè)計(jì)師和開發(fā)者在設(shè)計(jì)應(yīng)用程序時(shí)交流。下半年,我們將致力于改善多語言應(yīng)用程序的設(shè)計(jì)體驗(yàn),并支持直接從Qt design Studio生成UI/UX規(guī)范文檔。
Qt Design Studio已經(jīng)支持各種內(nèi)容的導(dǎo)入。Photoshop和Sketch可以直接集成,3D內(nèi)容可以通過常見的交換格式(如FBX)導(dǎo)入。每個(gè)新版本都將進(jìn)一步改進(jìn)這些功能。為了擴(kuò)展可用的圖形設(shè)計(jì)工具集成,我們計(jì)劃為Adobe XD等新工具提供額外集成。對素材導(dǎo)入格式的改進(jìn)也在進(jìn)行中,特別是在創(chuàng)建3D應(yīng)用程序中常用的格式,如FBX和glTF。除了設(shè)計(jì)工具集成,還可以集成到外部AR/VR應(yīng)用程序,如Autodesk VRED,我們正在考慮集成外部模擬應(yīng)用程序。
開發(fā)者工具
Qt開發(fā)者也有各種各樣的專用工具,我們正在不斷改進(jìn)它們。Qt Creator是我們?yōu)殚_發(fā)者提供的主要工具,它匯集了許多其他工具,一般都作為Qt Creator IDE的插件創(chuàng)建。當(dāng)然,開發(fā)者也可以使用我們的設(shè)計(jì)工具,它們也為那些主要編寫代碼的人提供了諸多明顯的好處。事實(shí)上,設(shè)計(jì)工具是基于Qt Creator的,只是隱藏了那些對設(shè)計(jì)過程沒有價(jià)值的部分。因此,讓我們深入了解我們正在為Qt Creator和其他開發(fā)工具所做的工作。
Clang已經(jīng)存在很長一段時(shí)間了,我們一直在不斷地改進(jìn)對Clang及其附屬工具的支持和使用。目前,我們正致力于通過Clang、Qt Creator和其他工具改善對C++的支持。在Creator中一旦可以更新Clang將使C++ 20得到支持。當(dāng)我們?yōu)镃/ C++啟用基于Clang的解析器時(shí),升級的翻譯工具將從Clang的支持中收益。
Qt Creator IDE提供了突顯多種語言語法的功能。目前正通過語言服務(wù)器協(xié)議(LSP)推廣對不同語言的支持。對于用戶來說,這意味著改進(jìn)了對Python和QML的支持。對于Qt Creator中的其他項(xiàng)目,我們正在研究簡化Qt Creator擴(kuò)展構(gòu)建的步驟。這將有助于通過Qt Marketplace創(chuàng)建和提供單獨(dú)的Qt Creator擴(kuò)展。
我們將繼續(xù)在Qt中改進(jìn)對CMake的支持,并與Kitware合作解決CMake上游需要修復(fù)的問題。利用CMake還意味著Qt用戶可以從新CMake版本中添加的功能中獲益,比如最近發(fā)布的CMake 3.17。
良好的文檔是Qt的基本價(jià)值,隨著Qt 5.15 LTS的推出,我們將擴(kuò)展QDoc來生成DocBook,這是一種專用于軟件文檔的標(biāo)準(zhǔn)化XML格式。該功能是我們開源社區(qū)做出寶貴貢獻(xiàn)的一個(gè)范例。除了不斷增強(qiáng)文檔內(nèi)容之外,還有很多進(jìn)行中的幕后工作,以確保我們的文檔在Qt 5.15 LTS、6.0和更高版本中保持世界級水平。
Qt for MCUs
隨著越來越多基于微控制器的設(shè)備具有顯示功能,我們希望進(jìn)入這一細(xì)分市場。在嘗試將Qt縮小到所需水平之后,我們意識到這種方法對于大多數(shù)常見用例都不可行。為了正確應(yīng)對這一細(xì)分市場,我們開發(fā)了Qt for MCUs,并在去年年底發(fā)布了第一個(gè)完全支持的版本。在2020年,我們將支持新設(shè)備和操作系統(tǒng),并呈現(xiàn)許多重要功能。
Qt for MCUs的核心是一個(gè)完全重寫的Qt Quick Ultralite圖形運(yùn)行時(shí),具備適用于受限設(shè)備的QML功能子集。隨著Qt 5.15 LTS和相應(yīng)Qt for MCUs版本的發(fā)布,我們在QML語言層面提供了完全的兼容性。由于Qt Quick Ultralite只支持QML的一個(gè)子集,所以兼容性僅限于所支持的功能。這使得以Qt for MCUs為目標(biāo)的應(yīng)用程序可以直接運(yùn)行在Qt 5.15 LTS上——并且可以高效利用Qt工具。對于同時(shí)在微控制器和微處理器上使用Qt的組織來說,完全的兼容性至關(guān)重要。
Qt for MCUs已有一些很棒的工具了,我們將在2020年大幅改進(jìn)這些工具。對于開發(fā)者而言,我們正在擴(kuò)展Qt Creator IDE的使用,并將整個(gè)開發(fā)者體驗(yàn)提升到Qt用戶熟悉的Qt for Device Creation級別。我們還增加了Qt Design Studio對MCU的支持,讓設(shè)計(jì)師和開發(fā)者能在微控制器的開發(fā)上無縫協(xié)作。
Qt 5.15 LTS
Qt 5.15 LTS已發(fā)布了三個(gè)測試版,正處于開發(fā)的最后階段,計(jì)劃在5月底發(fā)布。對于商業(yè)許可證持有者而言,Qt 5.15 LTS將獲得三年支持,就像Qt 5.12 LTS和Qt 5.9 LTS一樣。對于開源用戶來說,Qt 5.15是一個(gè)普通的Qt版本,沒有長周期支持,就像Qt 5.14和Qt 6.0一樣。
Qt 5.15 LTS最重要的新功能之一是完全支持的Qt Quick 3D,它為Qt應(yīng)用程序添加3D功能提供了易于使用且高效的API。3D引擎是基于與Qt 3D Studio相同的運(yùn)行時(shí)——深度集成了Qt Quick并增強(qiáng)了性能。Qt Quick 3D的一個(gè)關(guān)鍵優(yōu)點(diǎn)是能夠?qū)?D和3D Qt Quick無縫結(jié)合到一個(gè)應(yīng)用程序中,包括用于動畫的統(tǒng)一定時(shí)器。
圖形領(lǐng)域的另一個(gè)重要新項(xiàng)目是RHI的技術(shù)預(yù)覽—— Qt全新的渲染硬件接口。RHI是Qt 5.15 LTS的一個(gè)可選功能,可以用于在Metal和Vulkan等新圖形API上運(yùn)行Qt。但也有一些限制,例如,RHI在Qt 5.15 LTS中只支持Qt Quick (2D),而、尚不支持新的Qt Quick 3D。RHI將是Qt 6.0的圖形基線,但對于那些想要嘗試的人來說,Qt 5.15 LTS已經(jīng)提供了RHI。
其他與圖形相關(guān)的重要項(xiàng)目是Qt 3D的多項(xiàng)改進(jìn),提高了性能和功能。有人可能會問為什么有兩種不同的3D方法:Qt 3D和Qt Quick 3D。部分是由于歷史的原因 —— 過去,我們也曾考慮過將這些方法組合在一起。然而,Qt Quick 3D和Qt 3D用途不同 —— 一個(gè)是將3D內(nèi)容添加到Qt應(yīng)用程序的易于使用的API,另一個(gè)是轉(zhuǎn)換和調(diào)整3D渲染的多種特性的通用框架(甚至可以用它創(chuàng)建自己的渲染器)。
雖然我們在Qt 5.15 LTS中有很多新的圖形功能,但這還不是全部。我們在QML中也做了很多工作來改進(jìn)語言和功能。大多數(shù)新功能是為Qt 6開發(fā)的,但是我們已盡可能多地為Qt 5.15 LTS進(jìn)行了調(diào)整。Qt 5.15 LTS中新的QML功能包括QML類型注冊和一些其他特性。
與以往一樣,許多部分將在Qt 5.15 LTS中得到有價(jià)值的增量改進(jìn)。Qt for WebAssembly, Qt for Python,以及用戶要求的許多不同模塊的Qt功能。安卓支持將獲得許多可用性改進(jìn)、文檔完善和一些新功能,如使用本機(jī)文件對話框。除了增加新功能外,我們?yōu)镼t 5.15 LTS所做的重要事情之一就是標(biāo)記那些我們計(jì)劃在Qt 6.0中更改或刪除的API。當(dāng)開發(fā)者將他們的應(yīng)用程序移植到Qt 6時(shí),這將有很大的幫助。
Qt 6
Qt下一個(gè)重要版本將于今年年底推出。
Qt 5.0于2012年12月發(fā)布,因此Qt的重要版本之間相差8年,這與Qt 4.0和Qt 5.0之間的7.5年非常接近。就像Qt 4一樣,Qt 5在這些年里添加了很多東西——我們正計(jì)劃對Qt 6做同樣的事情。Qt 6.0開發(fā)的最初重點(diǎn)是Qt Essentials功能。我們希望確保在Qt 6.0發(fā)布之前完成所有需要的更改,以便能夠在整個(gè)Qt 6系列中保持二進(jìn)制和源代碼的兼容性。我們正努力將Qt 6打造為滿足2020年需求的平臺,而Qt 6.0只是這段美好旅程的開始。
我們將在今年推出許多關(guān)于Qt 6.0的博客文章和網(wǎng)絡(luò)研討會,所以請繼續(xù)關(guān)注我們的頻道。
行業(yè)解決方案
除了我已經(jīng)介紹過的通用工具和框架項(xiàng)目之外,我們還專門針對不同行業(yè)的需求開發(fā)了產(chǎn)品。Qt Automotive Suite將基于Qt 5.15 LTS,并且Qt Automotive Suite的用戶可使用所有Qt 5.15 LTS的功能。經(jīng)安全認(rèn)證的Qt Safe Renderer將有重大更新,為創(chuàng)建動態(tài)、安全關(guān)鍵的用戶界面提供更多功能。今年,它還將在更多的平臺上進(jìn)行預(yù)集成和認(rèn)證。Qt for Automation協(xié)議會不斷更新到新的Qt版本,并根據(jù)客戶反饋進(jìn)一步開發(fā)。
Marketplace
我們在2019年Qt全球峰會上宣布推出Qt Marketplace,并在同年底上線,最初的內(nèi)容來自多個(gè)合作伙伴和社區(qū)成員。越來越多的開發(fā)商正不斷添加新的內(nèi)容。如果您從未訪問過,我建議您從https://marketplace.qt.io進(jìn)入。
除了來自第三方的內(nèi)容,Qt公司還將利用Marketplace在Qt框架和工具的基礎(chǔ)上提供額外的內(nèi)容。2020年,我們將不斷改進(jìn)Marketplace的用戶體驗(yàn),尤其是購買和安裝體驗(yàn)。Qt Creator 4.12集成了Marketplace,允許通過Qt Creator IDE直接查看市場內(nèi)的可用選項(xiàng)。我們今年還將創(chuàng)建集成Marketplace的全新Qt安裝程序。