ython Qt GUI(圖形用戶界面)與數據可視化編程是結合了Qt框架和Python編程語言的一種方法,用于創建交互式的圖形界面和展示數據可視化結果。Qt是一個跨平臺的GUI開發框架,而Python是一種簡潔而強大的編程語言,兩者的結合為開發人員提供了豐富的工具和庫來創建功能豐富的應用程序。
一、Qt框架簡介
Qt是一種流行的C++開發框架,用于構建跨平臺的GUI應用程序。它提供了豐富的GUI組件,如按鈕、文本框、列表框等,以及強大的事件處理和布局管理功能。Qt具有良好的可擴展性和模塊化設計,使開發人員能夠快速構建各種類型的應用程序。
二、Python與Qt的集成
Python提供了PyQt和PySide這兩個庫,用于將Python與Qt框架集成。這些庫允許開發人員使用Python編寫Qt應用程序,并利用Python的簡潔性和易用性。通過Python與Qt的集成,開發人員可以更輕松地創建GUI應用程序,并使用Python的豐富生態系統和第三方庫。
三、Python Qt GUI編程
創建窗口和控件:使用Qt的窗口類(如QMainWindow)創建應用程序窗口,并在窗口中添加各種控件,如按鈕、文本框、標簽等。
布局管理:使用Qt的布局管理器(如QVBoxLayout、QHBoxLayout)來管理控件的位置和大小,以便自動適應窗口大小的變化。
事件處理:通過連接信號和槽(slot)來處理用戶交互事件,例如按鈕點擊、文本框輸入等??梢允褂肞ython的函數或方法作為槽函數,以實現事件響應邏輯。
樣式和主題:Qt允許通過樣式表(類似于CSS)來自定義控件的外觀和樣式,從而實現個性化的界面設計。
四、數據可視化編程
數據可視化庫:Python提供了許多強大的數據可視化庫,如Matplotlib、Plotly、Seaborn等。這些庫可以用于創建各種類型的圖表和圖形,如折線圖、柱狀圖、散點圖等。
數據處理:使用Python的數據處理庫(如NumPy和Pandas)來處理和準備數據,以便進行可視化。這些庫提供了豐富的功能,如數據過濾、聚合、清洗等。
圖表繪制:使用數據可視化庫提供的函數和方法,將準備好的數據繪制成各種圖表??梢宰远x圖表的樣式、顏色、標簽等,以及添加交互功能,如縮放、平移、懸停提示等。
數據更新和動態可視化:通過更新數據源或實時獲取數據,可以實現動態的數據可視化效果。這使得用戶能夠實時監測數據的變化和趨勢。
五、應用場景
Python Qt GUI與數據可視化編程的結合在許多領域都有廣泛的應用,例如:
數據分析和可視化工具:創建交互式的數據分析和可視化工具,幫助用戶更好地理解和分析數據。
數據監控和儀表盤:實時監控和展示數據指標,如網絡流量、服務器負載等,以便快速發現和解決問題。
科學研究和實驗控制:創建用于科學研究和實驗控制的圖形界面,方便實驗數據的輸入和結果的展示與分析。
可視化交互式應用程序:開發交互式的可視化應用程序,如地圖應用、數據可視化演示等,提供更好的用戶體驗和操作性。
Python Qt GUI與數據可視化編程的結合為開發人員提供了強大的工具和庫來創建功能豐富的圖形界面和展示數據可視化結果。通過結合Qt框架和Python編程語言,開發人員可以快速構建跨平臺的GUI應用程序,并利用Python的豐富生態系統和數據可視化庫來展示和分析數據。這種組合在許多領域都有廣泛的應用,為用戶提供更好的用戶體驗和數據交互性。無論是數據分析工具、數據監控儀表盤,還是科學研究和實驗控制,Python Qt GUI與數據可視化編程都能發揮重要作用。
t 是一個功能豐富的跨平臺 C++ 應用程序框架,它包含了許多用于不同目的的組件庫。以下是一些主要的 Qt 組件庫,這些庫為開發者提供了廣泛的工具和功能,以便構建復雜的應用程序。北京木奇移動技術有限公司,專業的軟件外包開發公司,歡迎交流合作。
1.Qt Widgets:提供傳統的圖形用戶界面(GUI)組件,如按鈕、文本框、滑塊等。
2.Qt Quick:用于創建動態和流暢的觸控界面,使用 QML(Qt Modeling Language)和 JavaScript。
3.Qt Network:提供網絡通信相關的功能,如 TCP/IP 套接字編程等。
4.Qt Multimedia:用于音頻和視頻處理,包括播放、錄制和流媒體等。
5.Qt SQL:提供數據庫操作的功能,支持 SQL 數據庫的訪問和操作。
6.Qt XML:用于處理 XML 數據,包括解析和生成 XML 文檔等。
7.Qt WebKit:提供 Web 內容的呈現和交互,允許在應用程序中嵌入網頁。
8.Qt Bluetooth:用于開發藍牙相關的應用,支持藍牙設備的通信和數據交換。
9.Qt SerialPort:用于串口通信,允許應用程序通過串行端口與設備通信。
10.Qt Concurrent:提供并發和多線程編程的支持,簡化多線程任務的執行。
11.Qt Location:用于地理定位和處理位置服務,支持各種位置提供者。
12.Qt NFC:提供近場通信(NFC)的支持,允許應用程序與 NFC 標簽和設備交互。
13.Qt WebSockets:用于實現 WebSocket 協議的通信,支持服務器和客戶端的功能。
14.Qt DBus:提供 D-Bus 通信機制的支持,用于進程間通信。
15.Qt SVG:用于處理 SVG(Scalable Vector Graphics)圖像,支持渲染和操作 SVG 文件。
Qt 還提供了一些工具和設計工具,如 Qt Creator IDE、Qt Designer 用于設計 GUI,以及 Qt Linguist 用于國際化和本地化。
Qt是一個1991年由Haavard Nord和Eirik Chambe-Eng開發的跨平臺C++圖形用戶界面應用程序開發框架。發展至今,它既可以開發GUI程序,也可用于開發非GUI程序,比如控制臺工具和服務器。Qt 同Linux上的 Motif,Openwin,GTK 等圖形界面庫和Windows 平臺上的 MFC,OWL,VCL,ATL 是同類型的東西。但它對比其他做界面的軟件會比較容易使用和學習。
Qt 是一個跨平臺的C++應用程序框架,支持Windows、Linux、Mac OS X、Android、iOS、Windows Phone、嵌入式系統等。也就是說,Qt 可以同時支持桌面應用程序開發、嵌入式開發和移動開發,覆蓋了現有的所有主流平臺。你只需要編寫一次代碼,發布到不同平臺前重新編譯即可。
Qt 不僅僅是一個GUI庫,它除了可以創建漂亮的界面,還有很多其他組件,例如,你不再需要研究STL,不再需要C++的頭文件,不再需要去找解析XML、連接數據庫、Socket 的各種第三方庫,這些 Qt 都已經內置了。
Qt 是應用程序開發的一站式解決方案!Qt 雖然龐大,封裝較深,但它的速度并不慢,雖不及MFC,但比Java、C#要快。Qt 程序最終會編譯成本地代碼,而不是依托虛擬機。Qt家族工具豐富,目前還包括Qt Creator, QtEmbedded,Qt Designer快速開發工具,Qt Linguist國際化工具等部分。
Qt非常適合跨平臺開發領域,是C++程序員第二要掌握的主流開發工具(第一當然是Visual C++啦)。 Qt的官網是https://www.qt.io/,最新版本可以從官網上下載,當前最新版本是Qt 5.12。
今晚推薦Qt編程好書:
* 1991 Haavard Nord和Eirik Chambe-Eng開始開發將會支持X11和Windows的Qt
* 1994 Qt Company成立
* 1996 KDE項目由MatthiasEttrich創建(Matthias現為諾基亞Qt發展框架工作)
* 1998 Apr 05Trolltech的程序員在 5 天之內將 Netscape5.0 從Motif移植到 Qt 上
* 1998 Apr 08 KDE Free Qt 基金會成立
* 1998 Jul 09 Qt 1.40 發布
* 1998 Jul 12 KDE 1.0 發布
* 1999 Mar 04QPL1.0 發布
* 1999 Mar 12 Qt 1.44 發布
* 1999 Jun 25 Qt 2.0 發布
* 1999 Sep 13 KDE 1.1.2 發布
* 2000 Mar 20 嵌入式Qt 發布
* 2000 Sep 06 Qt 2.2 發布
* 2000 Oct 05 Qt 2.2.1 發布
* 2000 Oct 30 Qt/Embedded 開始使用GPL宣言
* 2000 Sep 04 Qt free edition 開始使用 GPL
* 2008 Nokia從Trolltech公司收購Qt,并增加LGPL的授權模式
* 2011 Digia從Nokia收購了Qt的商業版權,從此Nokia負責Qt on Mobile,,Qt Commercial由Digia負責
* 根據最新消息,NOKIA已經停止Meltemi系統開發,Qt部門被解散
* 2012 Aug 09 作為非核心資產剝離計劃的一部分,諾基亞宣布將Qt軟件業務出售給芬蘭IT服務公司Digia。
* 2013年7月3日,Digia公司Qt開發團隊在其官方博客上宣布Qt 5.1正式版發布。
* 2013年12月11日,Digia公司Qt開發團隊宣布Qt 5.2正式版發布。
* 2014年4月,Digia公司Qt開發團隊宣布Qt Creator 3.1.0正式版發布。
*2014年5月20日,Digia公司Qt開發團隊宣布Qt 5.3正式版發布。
Qt是一個跨平臺的C++圖形用戶界面應用程序框架,提供給應用程序開發者建立藝術級的圖形用戶界面所需的所用功能。Qt很容易擴展,并且允許真正地組件編程。Qt與GTK、KDE、MFC,OWL,VCL,ATL是一樣的圖形界面庫。QT優點如下:
(1)優良的跨平臺特性
Qt支持下列操作系統: Microsoft Windows,Linux,Solaris, SunOS, HP-UX, Digital UNIX (OSF/1,Tru64),Irix,FreeBSD,BSD/OS,SCO,AIX,OS390,QNX等等。
(2)面向對象
Qt的良好封裝機制使得Qt的模塊化程度非常高,可重用性較好,對于用戶開發來說非常方便。 Qt提供了一種稱為signals/slots的安全類型來替代 callback,使得各個元件之間的協同工作變得十分簡單。
(3)豐富的API
Qt包括多達250個以上的C++類,還提供基于模板的collections, serialization,file,I/O device,directory management,date/time類。
(4)支持2D/3D圖形渲染,支持OpenGL
(5)大量的開發文檔
當今基于C++的圖形界面開發領域,能與qt相抗衡的也只有MFC,MFC是微軟的小弟,自然得天獨厚,比如開發深層次的Windows應用,MFC當然遠超qt,但qt也有殺手锏,那就是跨平臺。這兩點大家一目了然。下面,我們再來比較它們其它的特點。
(1)開發速度
整體來說可能MFC會快捷一些,因為windows平臺的開發工具大多很智能,因為立足于windows的開發人群很廣,從菜鳥到專業人士(開發人員一多,技術參考就多,周圍可以問問題的人就多),但是QT由于基于Linux,可用的開發工具不多,大都比較專業,多是第三方產品,而且集成度不大,第三方庫也沒有MFC的多,從這一點MFC略勝一籌,但是QT自從被Nokia收購后,官方發布了跨平臺集成開發環境QTCreator,所以之后走向就不好說了,個人總體感覺QT Creator和VS差距比較大,還需改進
但是從庫本身來說QT集成的功能較MFC龐大,而且使用的封裝技術信號和槽也是比較受到贊許的,比如QT Script為QT提供嵌入式腳本,QT界面庫支持CSS,所以QT做出來的界面比MFC要好,而且比較容易,MFC就需要借助第三方庫了。因為MFC是淺層封裝(最新的2008 sp1加入了BCG的高級界面庫,可能有所改善)windows SDK,以降低使用windows SDK引起的開發效率的降低,和開發難度的增加。所以QT庫是比MFC優秀的,兩個庫都經受了時間的考驗,穩定性都很高,Bug幾乎沒有
(2)運行效率
MFC由于其淺層封裝的特點,所以運行效率是比較高的,加上vc對windows的針對性優化,整體性能是比較高的,但是如果加入第三方庫就不敢保證了。QT因為庫比較龐大,封裝層次較深,所以運行效率較MFC為低,但是在現在的機器配置下,這些會引起人們的介意嗎?(C#大家都不介意了)
(3)應用范圍
現在windows的普及范圍誰能比過,所以MFC的客戶量比較多,QT主要是Linux下的開發人員在使用,但MFC也只是得益于windows(感覺又是一次捆綁戰略),MFC不支持嵌入式開發(主要指手機平臺),但是QT有對應的模塊,雖然這一手機開發領域被Java碾壓,但總歸是有的。
(4)學習難度
QT的封裝哲學比較明晰,和系統隔離的比較好,所以個人感覺門檻不高。MFC較難精通,因為深入開發之后SDK還是要了解的,否則程序感覺比較兒童化。
(5)偽對象 vs 真對象
歸根結底,Qt和MFC的差異在于其設計的差異。MFC的根本目的是訪問包裝起來的用C語言寫的windows的API。 這絕非好的面向對象的設計模式,在很多地方,你必須提供一個包含15個成員的C語言的struct,但是其中只有一個與你所期望的相關,或者必須用舊式的參數來調用你的函數。MFC還有許多讓人摸不著頭腦的地方,函數名沒有任何的連續性。比如,如果你創建了一個graphical類,直到調用了creat()以后該類才會被創建。然而對dialogs,必須要等到OnInitDialog()才能創建這個對象。奇怪的是到了views,創建該類的函數名竟然成了OnInitUpdate(),......你自己創建一個類用他們的方式調用它,你的程序崩潰了。
(6)消息循環
MFC是事件驅動的架構。要執行任何操作,都必須是對特定的消息作出響應。Windows對應用程序發送的
信息數以千計,遺憾的是,要分清楚這些分繁蕪雜的消息是很困難的,并且關于這方面的文檔并不能很好的解決這些問題。
Qt的消息機制是建立在SIGNAL()發送和SLOT()接受的基礎上的。這個機制是對象間建立聯系的核心機制。利用SIGNAL()可以傳遞任何的參數。他的功能非常的強大。可以直接大傳遞信號給SLOT(),因此可以清楚的理解要發生的事情。一個類所發送的信號的數量通常非常的小(4或者5),并且文檔也非常的齊全。這讓你感覺到一切盡在掌握之中。SIGNAL/SLOT機制類似于Java中listener機制,不過這種機制更加輕量級,功能更齊全。(這種機制確實貌似簡單清晰了一些)
(7)創建界面
MFC無法創建大小動態可變的子窗口 ,必須重新手動修改代碼來改變窗口的位置(這恰好解釋了為什么windows里的dialog是不可以改變的)這個問題在軟件進行國際化翻譯的時候更加嚴重,因為許多國家表達相同意思需要更長的詞匯和句子,必須要對每個語言的版本重新修改自己的軟件。
在Qt中,任何東西都可以手動的敲出來,因為它很簡單:為了得到一個button,可以這樣些button=new PushButton( "buttonName", MyParentName );如果想在按下某個按鈕以后想調用某斷代碼的執行,可以這樣寫:connect( button, SIGNAL( clicked() ), qApp, SLOT( action() ) );Qt擁有非常簡單而又不失強大的layout機制,以至于不使用它就是在浪費時間了。
Qt還提供了一個圖形用戶工具,Qt Designer,可以用來幫助建立用戶界面。可以修改所使用的任何控件的屬性。不用將他們放在嚴格的位置,可以通過layout完美的組織他們。
這個工具所產生的代碼我們是可以實際上閱讀并且可以理解的。生成的代碼單獨放在一個文件里,在編程的同時,你可以隨心所欲的多次重新生成用戶界面。
Qt Designer可以讓你完成許多在MFC中不可能完成的任務,比如用預先填好的生成listview,在每個tab上用不同的view來使用tab 控制。(界面方面Qt確實很好很強大)
(8)幫助文檔
用戶選擇圖形開發環境的時候,幫助文檔是否周全是左右其選擇的重要因素。Visual的開發環境的幫助文檔MSDN(這個還要單獨掏錢購買)非常的龐大,有10個CDROM光盤。他包羅萬象,涵蓋廣泛。但是難免有泥沙俱下,主題模糊,關鍵信息不突出的遺憾。其鏈接設計的也很糟糕,通過鏈接很難從一個類跳轉到其父類或者子類以及相關的類。如果你搜索一個關鍵字,不管是Visual C++, Visual J++, Visual Basic,只要包含這些關鍵字的信息統統的返回來。
Qt的文檔設計的相當優秀。你可以到https://doc.qt.io/上面一睹芳容。Qt的文檔完備且詳細的覆蓋了Qt的方方面面,竟然僅有18M。每一個類和方法都被詳盡描述,巨細靡遺,舉例充實。通過Trolltech公司提供的鏈接或者是Qt Assistant工具,可以方便的從一個類或者方法跳轉到其他的類。文檔還包含了一個初學者教程和一些典型應用的例子。同時還提供了FAQ和郵件列表,方便通過Internet或者用戶群來查閱。如果你購買了授權,在一天之內你將會得到Trolltech公司的技術支持。實際上,Qt優秀的幫助文檔使得尋求外部幫助的機會大大減少。Tolltech公司的一個宗旨是:有如此優秀的Qt產品以及其幫助文檔,技術支持是多余的。
MSDN用熟了很好用,很全面,相關的背景知識,例子都能找到。而且網上還有豐富的例程可以參考。僅憑Qt的幫助文檔絕對不足以解決所有問題,而網上我只找了個Qt中文論壇,提過幾個問題,有的給出了解決辦法,有的也沒人回答,還要靠自己試。
(9)Unicode
使用MFC,如果要顯示unicode,在編譯鏈接的時候必須用到特殊的參數(和改變可執行文件執行的入口),必須在每個string前面加上T,將char修改成TCHAR,每個字符串處理函數(strcpy(), strdup(), strcat()...... )都要改變成另外的函數名。更令人惱火的是支持Unicode的軟件竟然不能和不支持Unicode的DLL一起工作。這是個很嚴重的問題,但是你毫無選擇。
使用Qt,字符串用QString來處理,其本身是與生俱來的Unicode.不需要改變什么東西。不要在編譯/鏈接時候增添參數,不要修改代碼,只需要使用QString就可以了。QSting類功能強大,你可以廣泛的使用它,并且不要擔心Unicode問題。這使得轉換為Unicode非常的方便。QSting提供了轉換為char * 和UTF8的函數。顯然,MFC的CString的設計相比于Qt的QString設計有著巨大的不同。CString以char *為基礎提供了很少的功能。它的優點是當需要char *類型的時候,可以直接使用CString類型。乍看起來這個好像是個優點,其實實質上還是有很大的缺陷的,特別是可以直接修改char * 而不要更新類。在轉變為Unicode的時候這個也碰到很大的麻煩。(CString隨編譯選項可以是Unicode版)相反,QString在內部以unicode存儲string,需要時提供char *功能。實際上很少用到char *,因為整個Qt的API用文本的方式響應QString參數。QString還附帶許多其他的功能,比如自動分享QString的內容。這是一個非常強大的類,你會喜歡在很多地方用它的。
(10)國際化
使用MFC是可以國際化的,但是需要將每一個字符串放在一個字符串表中,在代碼中到處使用LoadString(IDENTIFIET)。然后轉化這些資源到DLL中,翻譯字符串到所需要的語言,改變圖形界面,然后調用程序使用這個DLL。整個過程是如此的繁瑣,可謂牽一發而動全身。考慮的事情要面面俱到。
使用Qt的時候,只需要將字符串置于函數tr()中,在程序開發中這算是舉手之勞??梢灾苯釉诖a中改變字符串的參考。Qt Linguist,Qt的一個工具,能夠提取所有待翻譯的string并按照友好的界面顯示出來。這個用戶界面非常適合翻譯,使用字典,顯示字符串內容,恰當的unicode顯示,快捷方式沖突檢測,檢測未翻譯的字符串,檢測字符串修改情況,功能齊全。這個軟件可以供沒有任何編程經驗的翻譯者使用。同時該軟件在GPL的版權下發布,可以按照你的需求來修改它。翻譯以后的文檔保存在XML中,適合軟件復用的原則。為軟件增加一種新的語言版本僅僅是用Qt Linguist產生一個新的文件而已。(這點Qt做的很不錯。)
(11)resources問題
使用MFC,一部分開發過程要依靠“resources”,在很多的案例中開發者必須使用他們。這樣會導致如下的后果:出了Visual Studio,你很難使用其他的工具來完成開發。 資源編輯器僅有有限的功能,比如:通過Dialog編輯器不可能改變所有的屬性,一些屬性可以改變,另一些屬性則不可能改變。(譯者注:下面還有兩條陳述MFC缺點的實例,但我感覺這些已經夠說明問題了,暫時刪節不譯)
然而Qt并沒有資源的概念,這就解決了以上所提到的問題。Qt提供了一個腳本使得能將編入你的代碼。對于界面設計,Qt Designer則創建了可讀的代碼。 (Qt Designer設計界面很不錯)
(12)價格
一旦你購買了Visual Studio,你將免費的獲得MFC SDK。Qt在Unix上是可以免費獲得其遵守GPL版權的版本(現在在windows 上也可以免費獲得其GPL版本)。如果要開發不公開源代碼的軟件,必須購買Qt的授權。在特定平臺下,每個開發者購買一個永久性授權,并獲得一年的技術支持。
(13)發布
在發布基于MFC的軟件時,必須依靠存在于客戶電腦上的MFC。但是這是不安全的,同樣是MFC42.dll,可以基于相同的庫得到3個不同的版本。通常,需要檢查是否擁有正確的MFC42.dll版本,如果不是,就升級它。但是升級MFC42.dll會改變很多軟件的行為。這讓我感到很不舒服,如果用戶在安裝我的軟件以后導致其機器死機該怎么辦?
Qt則沒有這個風險,因為Qt壓根就沒有“升級整個系統”這個概念。(如果不是一個版本的Qt,還是會有問題的)
Qt是使用的語言是C++,所以C++能做的領域,Qt都適合。而且Qt還支持手機開發,所以Qt的應用場合非常廣。qt常見的應用領域有軍工軟件行業(在國內這是第一大應用領域)、游戲(比如極品飛車)、服務端開發、數字圖像處理、虛擬現實仿真(比如Google地球)、嵌入式系統的界面、跨平臺開發等等。
總而言之,學好C++和Qt,走遍天下都不怕。下面列舉了Qt成功開發的著名軟件。
3DSlicer, a free open source software for visualization and medical image computing
AcetoneISO:鏡像文件掛載軟件
Adobe Photoshop Album,一個圖像組織應用程序 [35]
Arora:一款跨平臺的開源網頁瀏覽器
Autodesk MotionBuilder, 三維角色動畫軟件
Autodesk Maya, 3D建模和動畫軟件
Avidemux, a Free Software program designed for multi-purpose video editing and processing
Avogadro:高級分子編輯器
Battle.net:暴雪公司開發的游戲對戰平臺
BOUML,一個免費的統一建模語言工具箱
Bitcoin:比特幣
chmcreator:開源的chm開發工具
CineFX:一款跨平臺、開源、免費、影片剪輯,特效與合成套裝
CoCoA, a software for computations in commutative algebra
Dash Express, an Internet-enabled personal navigation device
DAZ Studio, a 3D figure illustration/animation application
Doxygen:API文件產生器
EAGLE, tool for designing printed circuit boards(PCBs)
EiskaltDC++, a program that uses the Direct Connect protocol.
Emergent:神經網絡模擬器。
, a software product for the simulation of electromagnetic fields
eva:Linux版QQ聊天軟件。
FreeCAD, a free and open source 3D-Solid and general purpose design CAD/CAE
FreeMat:一個自由開源的數值計算環境和編程語言
Full Tilt Poker, one of the most popular online poker programs
Gadu-Gadu:實時通信軟件
Gambas, A free development environment based on a Basic interpreter
GoldenDict:一款開源的字典軟件
Google地球(Google Earth):三維虛擬地圖軟件。
GNS:Cisco網絡模擬器。
Guitar Pro 6, a tablature editor
刺猬大作戰:一個基于百戰天蟲的開源游戲。
Hydrogen, an advanced drum machine
ImageVis3D, a volume ray-casting application
Ipe:自由的矢量圖形編輯器
ISE Webpack, a freeware EDA tool for Windows and Linux developed by Xilinx
Kadu, a Polish instant messenger using the Gadu-Gadu protocol
KDELibs:一個許多KDE程序都使用的共享庫,如Amarok、K3b、KDevelop、KOffice等。
KeePassX, a multi-platform port of KeePass, an open source password manager for Microsoft Windows
Launchy:一個開放源代碼的快捷啟動器
LMMS:一個開放源代碼的音樂編輯軟件
LyX:使用Qt作為界面的LaTeX軟件。
Mathematica:Linux和Windows版本使用Qt作為GUI
Maxwell Render,a software package that aids in the production of photorealistic images from computer 3D model data
Mixxx:跨平臺的開放源代碼DJ混音軟件
MuseScore,一個WYSIWYG的樂譜編輯器
MythTV:開源的數字視頻錄制軟件。
Nuke, a node-based compositor
PDFedit:自由的PDF編輯器
PokerTH, an open source Texas hold 'em simulator
Psi:一款XMPP網絡協定的實時通信軟件
qBittorrent:自由的BitTorrent P2P客戶端
QCad:一個用于二維設計及繪圖的CAD軟件
Qjackctl, a tool for controlling the JACK Audio Connection Kit
QSvn, a GUI Subversion client for Linux, UNIX, Mac OS X and Windows
Opera:著名的網頁瀏覽器。
Qt Creator, the free software cross-platform integrated development environment from Nokia
Qterm:跨平臺的BBS軟件。
Quantum GIS:自由的桌面GIS
Quassel IRC:跨平臺的IRC客戶端
RealFlow, a fluid and dynamics simulator for the 3D industry
Recoll:桌面搜索工具
Rosegarden, a free software digital audio workstation program
SciDAVis, a cross-platform plotting and data analysis program
Scribus:桌面排版軟件。
Skype:一個使用人數眾多的基于P2P的VOIP聊天軟件。
SMPlayer:跨平臺多媒體播放器
Spotify, music streaming service.
Stellarium:一款天文學的自由軟件
TeamSpeak:跨平臺的音效通信軟件
Texmaker:一款跨平臺的開放源代碼LaTeX編輯器
TeXworks, It is a graphical user interface to the typesetting system TeX.
TOra, a database administration tool[36]
UniversalIndentGUI,an application which helps the user to beautify, reformat or indent various kinds of code.
Valknut,a program that uses the Direct Connect protocol
VirtualBox:虛擬機軟件。
VisIt:一個開源型交互式并行可視化與圖形分析工具,用于查看科學數據。
VisTrails, a scientific workflow management and visualization system
VLC多媒體播放器:一個體積小巧、功能強大的開源媒體播放器。
VoxOx, a unified communications software.
WordPress, based on Qt for Maemo and Symbian
wpa supplicant, a free software implementation of an IEEE 802.11i
Xconfig:Linux的Kernel配置工具
咪咕音樂:咪咕音樂是中國移動傾力打造的正版音樂播放器
WPS Office:金山軟件公司推出的辦公軟件
極品飛車:韓國Gameloft游戲公司出品的著名賽車類游戲
Qt可以分為商業版和免費版。商業版又分為專業版和企業版。Qt免費版是Qt的非商業版本,開源??梢悦赓M下載,但要基于GPLv3協議使用。
對于我們學習者來說,當然是使用免費版了。
當前,Qt的最新版是 5.12 LTS(長期支持版本),于2018年12月6日正式發布。這是一個長期支持版本(LTS),官方將提供為期三年的支持。自上一個 LTS版本Qt 5.9.7發布以來,官方一致專注于提升軟件質量,修復了2000多個bug,若從Qt 5.6.3算起已經修復了5000多個bug。當然這只是個開始,在即將到來的補丁中,官方將持續提升Qt 5.12的質量。
和其他主要版本一樣,Qt 5.12 LTS也包含了許多新特性。下面讓我們聊聊其中的幾個亮點。
(1)新的模塊和平臺
Qt現在完全支持Qt for Python,讓Python開發者可以使用各種Qt API。目前,您可測試其技術預覽版,正式版本將在Qt 5.12之后不久發布。Qt for Python源自我們多年來一直在qt-project.org上托管的PySide項目。Qt for Python把大多數Qt C++的API開放給Python開發者使用。簡而言之:Python開發者現在也可以創建復雜的圖形化應用程序和用戶界面。Python開發者的福音啊。
學過MFC開發的朋友知道,MFC可以生成ActiveX控件,然后可以放到網頁中使用。Qt目前也有這樣的功能,Qt 5.12包含Qt for WebAssembly的第二個技術預覽版。使用Qt for WebAssembly,您可以編譯Qt應用程序,并可在任何現代Web瀏覽器中運行。雖然Qt for WebAssembly仍被標記為技術預覽版,但它的功能非常強大。貌似,現在開發工具不支持網頁插件都不好意思出來混,可以看出,Qt在努力的追趕著MFC。
除了支持Python和WebAssembly這兩個新平臺之外,Qt 5.12還完全支持了兩個原來的技術預覽模塊:
Qt Remote Objects使Qt進程之間的通信變得天衣無縫。它允許將QObject的屬性,信號和槽暴露給另一個進程,且這兩個進程可以運行在不同設備上。
Qt WebGL Streaming Plugin是另一個現在完全支持的插件。此插件允許您通過網絡將應用程序的用戶界面流式傳輸到任何現代瀏覽器。
(2)Qt QML和Qt Quick
在新版本中,我們對QML中的JavaScript引擎進行了一些重大改進。它從兼容ECMAScript 5升級到現在完全支持ECMAScript 7?,F在可以使用最新的JavaScript了,同時也方便了第三方JavaScript庫的集成?,F在還支持ECMAScript模塊,可以從C ++和QML / JS加載。
我們已經在Qt Quick中添加了另一種Item View,即TableView。它比之前QQC1中的實現更高效,并填補了我們View控件中最后一個重要空白。Qt Quick Controls 2中的許多控件還擴充了新方法和新功能。
Qt 5.11的Pointer Handlers現在改名為Input Handlers,它已經正式發布,并成為Qt Quick中的重要功能。Input Handlers模塊簡化了復雜觸摸交互的設計,過去使用MouseArea或TouchArea模塊做復雜交互時非常困難。另外,我們還添加了兩個新的Input Handlers用于懸停和拖動項目。
Qt Quick現在支持預生成的distance field textures。這些紋理包含在字形(glyph)中,并用于在Qt Quick中渲染文本,在編譯時預生成它們有助于提高應用程序啟動性能,尤其是在低端嵌入式設備上。
(3)Qt Core和Qt Network
Qt Core獲得了對CBOR(簡明二進制對象表示)的支持,這是一種類似于JSON的二進制格式,但它允許更多的數據類型和靈活性。
新頒布的Qt改進了QRegularExpression以支持通配符匹配,我們現在可以棄用舊的QRegExp類了。
在Qt Network中,我們添加了DTLS over UDP的支持。在macOS和iOS上,我們現在通過TransportSecurity后端,可以支持ALPN和HTTP / 2,并且我們在通用SSL后端中添加了PKCS#8支持。
(4)Qt Gui和Widgets
在Windows上,Qt現在支持Windows UI自動化,允許基于Qt的UWP應用程序與各種可用的可編程的UI控件工具進行交互。Qt使用統一的Windows Pointer Input Messages(在Windows 8或更高版本中支持)替換了平板電腦、觸摸屏、觸摸板或鼠標中的輸入實現?,F在新增一些硬件的支持,如MS Surface系列中的screen digitizer,而不再需要定制的驅動。
新版本Qt為QGradient添加了許多預定義的漸變(參考https://webgradients.com/)。QImage支持RGBA64圖像格式,每個顏色通道16位。這些信息可以從PNG或TIFF的文件中讀取,并上傳到OpenGL或從OpenGL中獲取。
最后,新版本Qt還修復了Qt Widgets中的大量bug。
(5)其它更新
Virtual keyboard現在支持13種額外的鍵盤布局以及MyScript手寫識別功能。它現在帶有一個公共擴展API,允許您定義自己的布局。
Qt Location現在包含一個升級的MapBox插件和幾個小的API增強功能。我們已將Qt WebEngine升級到Chromium 69,并獲得對客戶端證書的支持。
Qt for Automation現在更新了新版的KNX和MQTT模塊,他們支持最新版本的協議。并且作為技術預覽版本,我們添加了對OPC / UA的支持。
另外,即將推出的Qt 3D Studio 2.2 Studio也將基于Qt 5.12 LTS。
最后,Qt 5.12還附帶了新版本的Qt Creator4.8。
總而言之,Qt 5.12值得你學習和擁有!
#編程#
*請認真填寫需求信息,我們會在24小時內與您取得聯系。