❶ QT和MFC的優劣
QT和MFC的優劣:
(1)開發速度
就整體而言,MFC可能會快捷一些,因為Windows平台的開發工具大多很智能,因為立足於Windows的開發人群很廣,從菜鳥到專業人士(開發人員一多,技術參考就多,周圍可以咨詢問題的人就多)。
相比較而言,Qt基於linux,可用的開發工具不多,而且這些工具大都比較專業,多是第三方的產品,加上這些工具的集成度不高,支持的第三方庫也沒有支持MFC的第三方庫多,因而從這一點看,MFC略勝一籌。
不過,Qt自從被諾基亞公司收購後,官方發布了跨平台集成開發環境Qt Creator,之後的走向就不好說了,作者個人的總體感覺是Qt Creator和VS差距比較大,還需要改進。
(2)運行效率
MFC採用淺層封裝,運行效率比較高,加上VC對Windows進行了針對性的優化,因而整體性能是比較高的,但是如果加入第三方庫就不敢保證整體的高性能了。
Qt庫比較龐大,封裝層次較深,所以運行效率比MFC低,但是在如今主流計算機系統的配置下,人們還會介意這點性能差別嗎?
(3)應用范圍
如今Windows的普及率無人能及,MFC的使用人數自然就多,相比而言,Qt主要是Linux下的開發人員在使用。MFC不支持嵌入式開發(主要是指手機平台)。
而Qt有對應的支持模塊,雖然這一手機開發領域被java碾壓,但總歸還是有Qt的使用空間。
(4)學習難度
Qt的封裝方式比較明晰,和系統隔離得比較好,作者個人覺得學習的門檻不高。而MFC則較難精通,因為深入開發之後還需要了解SDK,否則開發出的程序比較初級。
❷ qt編程問題
1、關聯Qt庫。如果是分別安裝的Qt Creator和Qt庫,而不是安裝集成Qt Creator和Qt庫的SDK,則需要手動關聯Qt庫。打開工具→選項菜單,然後選擇「構建和運行」一項,再進入Qt版本選項卡。點擊右上角的「添加」按鈕,然後會讓選擇qmake.exe文件,我們在Qt(不是Qt Creator)安裝目錄的bin目錄中找到該文件並打開。現在已經默認生成了版本信息,我們點擊確定按鈕即可。
2、關聯MinGW。在安裝Qt 4.8.6及以後的Qt 4版本時,應該按照安裝時的提示來下載相應版本的MinGW,不然編譯程序無法運行。如果是Qt4版本,需要使用GCC 4.4,也就是MinGW需要是4.4版本的,其他新的版本均不可用。在Qt 4.8版本,需要下載並指定GDB才能正常調試。下載完MinGW和GDB以後,將其解壓到Qt的安裝目錄中,比如這里都解壓到了C:Qt目錄中。打開工具→選項菜單,然後選擇「構建和運行」一項,再進入工具鏈選項卡。點擊右上角的「添加」按鈕,然後會讓選擇mingw32-g++.exe文件,我們在MinGW安裝目錄的bin目錄中找到該文件並打開。關聯GDB則進入調試器選項卡添加GDB相關exe文件。
如果安裝的是集成開發包QtSDK,則不需要手動關聯Qt庫、MinGW和GDB,由Qt自動關聯。
注意:Qt5以後版本默認也包含了所有需要的工具,不存在這里的情況,直接下載安裝即可使用!
3、在創建桌面版項目時,最好選中「使用影子構建」,這樣編譯生成的文件會和源碼分別存放,如下圖所示。編譯完成後會發現多了一個helloworld-build-desktop-Qt_4_8_1__4_8_1____目錄,裡面存放的就是編譯生成的文件。這就是前面創建項目講到的 「使用影子構建」 ,如果沒有選中這個,那麼生成的文件就會和源碼在同一個目錄里。
13、狀態信息可以被分為三類:臨時信息,如一般的statusTip提示信息,上面講到的動作提示就是臨時信息;正常信息,如顯示頁數和行號;永久信息,如顯示版本號或者日期。可以使用showMessage()函數來顯示一個臨時消息,它會出現在狀態欄的最左邊。一般用statusBar->addWidget()函數添加一個QLabel到狀態欄上用於顯示正常信息,它會生成到狀態欄的最左邊,可能會被臨時消息所掩蓋。如果要顯示永久信息,要使用statusBar->addPermanentWidget()函數來添加一個如QLabel一樣的可以顯示信息的部件,它會生成在狀態欄的最右端,不會被臨時消息所掩蓋。
14、關於隨機數,在Qt中是使用qrand()和qsrand()兩個函數實現的。在使用qrand()函數產生隨機數之前,一般要使用qsrand()函數為其設置初值,如果不設置初值,那麼每次運行程序,qrand()都會產生相同的一組隨機數。為了每次運行程序時,都可以產生不同的隨機數,我們要使用qsrand()設置一個不同的初值。
❸ 桌面端開發都用什麼語言,簡單分析下這些語言的優劣勢對比
目前,最優的選擇有四個:
1.如果只在win下使用,.net form是不二選擇,可謂是又快又好,企業應用或定製開發都是相當好的,初學者也可以入手。
2.electron,跨平台。需要會前端,必須熟悉js、css和html。屬於前端人員大殺器,如果是初學者,需要一下子學三樣東西,再加上electron的進程間通信,可能會被搞懵。
3. qt5,可以使用qml(js語法)進行UI編程,但是需要懂c艹,但是寫軟體相當快,還可以寫安卓、ios、Linux、嵌入式中的應用。
4.flutter,剛剛正式支持win平台的軟體開發。谷歌出的這個東西,適合沒有基礎的初學者,因為是一個全新的體系,全新的語言,寫ios、安卓非常高效,之後還會兼容h5。如果是初學者可以跟著走,值得嘗試。但是新東西總有一些坑。
正式項目跨平台建議electron或qt,只用win平台強烈建議微軟自己的net。個人技術嘗試建議flutter。
桌面端開發跨平台的,如果你是輕量級的項目,那麼我推薦你用electron, 目前使用Electron來開發的桌面應用非常多,我們最熟悉的比如Atom,VScode等等。
而且在github上也能找到許多應用使用了electron。
electron是Node,Chromium,html,css,js的結合框架,這就需要你有一定的前端基礎。其實只需要了解一下electron的API就行了,其他的就像你在做web是一樣的。
這種方式最大的缺點就是性能,還有透明窗口也有問題。所以在做需要性能方面佔有很大成分的項目時,並不推薦使用這個方式。
那麼其他的,就是最近幾年使用比較多的windows directui框架,但它不是跨平台的。
那麼就引出了qt,作為c++跨平台的界面框架,這個上手的話,我覺得對一般人是有難度的,因為首先需要扎實的c++功底,其次你要熟悉控制項的製作原理,因為有時候你需要定製自己的UI控制項。它現在在嵌入式,軍工領域非常受歡迎。但是整個庫非常臃腫龐大,而且開發界面的效率也非常低。如果來做互聯網項目,迭代更新的速度根本就跟不上。
目前都只有大公司會採用,像maya這種生產力型的應用很多是qt做的。
還有一種是直接使用Cef加js,比如網易雲音樂,就是這么搞的,但是很多和系統平台的交互介面你需要重寫,等於是需要自己造輪子。工作量大,目前沒有適合的框架給你套用,也需要扎實的c++功底。
其實pc端的應用基本也就windows會火一些,再加一個macos,那麼選擇qt應該會很好一點,畢竟你自己造一個跨平台的框架,太費時。總之,做跨平台就意味著,不可能做到既有效率又完美的實現各種功能,許多都要自己摸索。
win桌面端直接上visual studio啊!然後你熟悉什麼語言?vb.net,c#,c++都有相應的win桌面工具。直接用就好了,非常好用
編程語言這種東西無所謂,只要能用啥都可以。 主要看你老闆需要和你會用什麼語言。
比如 我用AS編安卓程序,當然用JAVA。不過我後台最開始用ASP和ASP.NET來做,現在換PHP了。桌面端用QT或者VB做。 涉及單片機部分控制也用C。
現在做跨平台的了 開始以QT為主了。
只要能達到目的啥都可以。
學會1-2種 換其他的也不是很難。
對初學者來建議學C起步吧。
精通一門,重新學個語言入門也就1個月的事。
PC桌面程序,如果簡單一點的,用pyqt5+python的開發難度和周期都比較現實一點
會C++ 用Qt5 非常不錯 寫代碼效率很高
會js 用atom使用的那個框架
會Python用PyQt 寫代碼很快
會java用JavaFX
看語言咯
還可以用delphi,其firemonkey框架發布8年時間,支持跨平台:win,安卓,ios,macos,linux,後續支持webassembly,界面是控制項拖拽布局所見即所得,開發效率較高。編譯生成的是機器碼,編譯速度快,調試方便,其生成機器碼運行效率較高,支持x86,arm的32位64位處理器。支持跨平台3D界面,藍牙通訊,定位,重力,攝像等,支持多種SQL,NoSQL資料庫。單個開發工具實現前後端開發,跨平台開發。適合個人和小公司用一套工具實現大部分開發需求。
主要有以下幾種技術
### Duilib
#### 簡述
Duilib是在Windows平台上使用最廣泛的類庫,使用C++和XML混合編程,國內很多計算機企業都喜歡使用這個類庫,可能是由於他的技術許可比較寬泛的原因。
適合於界面比較簡單的軟體,視覺特效豐富,局限於Windows的平台。例子:360電腦管家。
#### 優勢
#### 劣勢
### Gtk、Qt或WxWidget:
#### 簡述
三種基本可以做到跨平台的技術,使用C/C++開發,使用者廣泛。其中WxWidget使用了API嫁接方式,Qt和Gtk(包括各種綁定技術)使用自繪技術。
結構嚴謹,軟體可以做的很大很復雜。例子:WPS和Maya。
#### 優勢
#### 劣勢
### Electron:
#### 簡介
使用Web技術開發桌面軟體,基於Chromium(Chrome)引擎,使用JS編程語言,絕大多數使用者都是原來的網頁開發者。
絕大多數都是愛好者使用,處於「勉強可用」的地步。
適合大面積靜態展示型軟體使用。例子:網易雲音樂。
#### 優勢
#### 劣勢
### QtQuick(QML)
#### 簡述
Qt公司開發的一款基於OpenGL的圖形類庫,有顯卡加速,類似於Duilib。採用了C++與QML混合編程。QML類似於JavaScript語言。
QtQuick下一個版本在Qt 6上更加強大,業界期待已久。
#### 優勢
#### 劣勢
### Atk、Swing或JavaFX
使用Java語言開發軟體,有JDK加持業界積累的眾多Java類庫支持。有不輸於VS的IDEA加持,本應該更棒,只是現在已經式微了。
絕大多數使用者都是企業開發(不追求界面美觀)、愛好者(開發順手)。
### WinForm、WPF或Xamarin:
使用C#開發,WinForm和WPF局限於Windows平台。有VisualStudio加持使用很爽。
### Flutter:
使用Dart語言,新類庫,bug可能會很多。
### SwiftUI或Cocoa:
蘋果平台原生界面技術,macOS平台內建支持,不是macOS專用軟體不推薦。
### Win32:
經典Windows 平台API,絕大多數只有一些老軟體還在使用,不是維護老軟體不推薦。
winform,不二選擇
webview2,作為一個瀏覽器控制項嵌入在桌面應用中,支持.net core和.net framework
❹ 請哪位來解釋一下Qt靜態編譯和動態編譯的區別
靜態編譯與動態編譯的區別:
1、動態編譯的可執行文件需要附帶一個的動態鏈接庫,在執行時,需要調用其對應動態鏈接庫中的命令。
所以其優點一方面是縮小了執行文件本身的體積,另一方面是加快了編譯速度,節省了系統資源。
缺點一是哪怕是很簡單的程序,只用到了鏈接庫中的一兩條命令,也需要附帶一個相對龐大的鏈接庫;二是如果其他計算機上沒有安裝對應的運行庫,則用動態編譯的可執行文件就不能運行。