來(lái)源:嵌入式ARM
Qt一開(kāi)始是由奇趣公司開(kāi)發(fā)的,后來(lái)被Nokia收購(gòu)了,然后再被Digia收購(gòu)了。所以有的人會(huì)誤以為Qt就是為了塞班系統(tǒng)而生,是個(gè)落伍的產(chǎn)物。
但是很多嵌入式軟件、桌面工具都是用Qt來(lái)開(kāi)發(fā)的,包括Quartus和Cadence也有用到Qt。
誠(chéng)然,Qt也是類似于C#、JAVA那樣,專門用來(lái)開(kāi)發(fā)圖形界面的,那么Qt有哪些特別的地方呢?以下,一一介紹。
1、Qt能在哪些平臺(tái)使用?
這里的平臺(tái)是指操作系統(tǒng),不是指CPU。Qt可以在Windows、Linux、Android、iOS、mac OS、QNX、VxWorks下使用。
把Linux移植到ARM上,也是能跑Qt開(kāi)發(fā)出來(lái)的軟件的。
2、Qt是開(kāi)源的,還是收費(fèi)的?
是開(kāi)源的,需要遵循LGPL、GPL協(xié)議。
3、Qt是使用什么語(yǔ)言開(kāi)發(fā)的?
建議底層用C 做業(yè)務(wù)邏輯,上層用QML做圖形界面。也可以純C 開(kāi)發(fā),但是做界面時(shí)會(huì)比較累。
4、什么是Qt Quick,什么是QML,兩者有什么關(guān)系?
Qt Quick只是一種技術(shù)名稱,它本身不指代任何語(yǔ)言,但是,當(dāng)別人說(shuō)到Qt Quick一般是指用QML快速開(kāi)發(fā)圖形界面。
QML是一種類似于CSS和JAVA Script的混合語(yǔ)言,語(yǔ)法非常簡(jiǎn)單易學(xué),適合沒(méi)什么編程經(jīng)驗(yàn)的人。
5、什么是Qt Creator?
Qt Creator是Qt官方的IDE,專門用Qt框架開(kāi)發(fā)圖形界面的。
6、除了Qt Creator,還有什么IDE可以用?
目前比較流行的是Visual Studio,簡(jiǎn)稱VS。Qt Creator一安裝好就能使用,但是VS是需要自己設(shè)置才可以用。
7、Qt Creator的原生編輯器有Vi / Vim模式嗎?
有,叫Fake Vim,按照下圖設(shè)置即可。
8、新手入門應(yīng)該學(xué)哪個(gè)版本的Qt?
應(yīng)該學(xué)最新的Qt5,推薦教材《Qt Creator快速入門》、《Qt Quick核心編程》,以及官方自帶的英文文檔。
9、哪里能找到Qt的官方文檔?
打開(kāi)Qt Creator,如下圖,Help,就是了。
有某些方法,文檔上并沒(méi)有寫,但是實(shí)際上是存在的。這時(shí)需要利用代碼補(bǔ)全。
10、什么是pyQt?
pyQt是指用python腳本語(yǔ)言來(lái)調(diào)用Qt框架,從而快速開(kāi)發(fā)圖形界面。但是商業(yè)使用pyQt,是要收費(fèi)的。
目前只有一本關(guān)于pyQt4的書——《PyQt編程指南》,但是現(xiàn)在最新的是pyQt5。
推薦《pyQt5參考手冊(cè)》、《PyQt5 tutorial》。
11、我現(xiàn)在只學(xué)習(xí)C、C 語(yǔ)法,不做圖形界面,可以使用Qt Creator編譯、運(yùn)行代碼嗎?
可以。Qt Creator自帶MinGW編譯器可以編譯C、C 。但不是所有從Qt官網(wǎng)下載的安裝包,都帶有MinGW編譯器,下載時(shí)需特別注意。
新建工程時(shí),使用以下工程模板即可。
12、如何使用Qt開(kāi)發(fā)3D圖形界面?
可以使用Open GL,請(qǐng)參考《QT OpenGL教程》。
13、為什么隨便寫一個(gè)Hello World,編譯出來(lái)都30幾MB?
因?yàn)镼t默認(rèn)使用動(dòng)態(tài)編譯,所以編譯出來(lái)體積超大??梢允褂肬PX壓縮殼。
14、怎樣使用Qt靜態(tài)編譯代碼?
請(qǐng)參考《Qt5.9.0 MingGW靜態(tài)編譯》,建議下載現(xiàn)成的靜態(tài)庫(kù)。
靜態(tài)編譯出來(lái)的文件非常大,建議使用UPX壓縮殼。
其中,靜態(tài)編譯Qt5.7.0,需要卸載VC6.0,否則config不過(guò)。
15、怎樣使用Qt發(fā)布應(yīng)用?
動(dòng)態(tài)編譯的話,可以使用Qt Creator自帶的windeployqt。
動(dòng)態(tài)編譯后,可以使用NSIS制作成安裝包。
靜態(tài)編譯,再加UPX壓縮殼,即可發(fā)布,而且是單一文件。
16、怎樣把Qt的代碼,移植到ARM?
你需要使用交叉編譯器Arm Gcc,并設(shè)置硬件相關(guān)的參數(shù)。
17、Qt用在Android、OS X上面多嗎?
不多,所以不建議使用Qt開(kāi)發(fā)Android、OS X的app。
18、Qt用在哪些地方比較多?
嵌入式開(kāi)發(fā)、桌面開(kāi)發(fā)。
19、哪里能下載到Qt?
https://www.qt.io/download-open-source/#section-2
在官網(wǎng)注冊(cè)賬號(hào),登錄,就可以在以上頁(yè)面下載Qt了。
不想注冊(cè)的話,也可以使用國(guó)內(nèi)的鏡像。
http://mirrors.ustc.edu.cn/qtproject/official_releases/qt/
20、Qt4和Qt5有什么區(qū)別?
Qt4一行代碼,即可全局支持中文,Qt5默認(rèn)支持中文。
Qt4不支持串口,需要使用第三方的串口庫(kù),Qt5支持串口。
此外,Qt4和Qt5還有很多區(qū)別,這里不一一列舉。
21、有哪些好用的Qt第三方庫(kù)?
第三方庫(kù),不是Qt官方開(kāi)發(fā)的,而是由其它組織開(kāi)發(fā)的。
比較出名的是QWT庫(kù),使用QWT庫(kù),可以輕松搞定各種圖形界面,如:餅狀圖、示波器圖、波特圖等。
然而,QT自帶的QtCharts比QWT庫(kù)還要好用。QtCharts支持C 和QML混合編程,而QWT只支持C 。
QWT已經(jīng)很久不更新了,所以,有的人會(huì)使用qcustomplot,它也是一個(gè)畫圖的第三方庫(kù)。
22、哪里可以在線瀏覽Qt的類?
http://doc.qt.io/qt-5/classes.html
23、哪里可以在線瀏覽Qml的類型?
http://doc.qt.io/qt-5/qmltypes.html
24、怎樣讀取USB設(shè)備的信息?
可以使用WIN32的API捕獲USB的消息(#include
),或者使用libusb。
25、哪些版本的QT可以支持XP系統(tǒng)?
Qt5.7.0及之前的版本都可以支持XP。Qt5.7.0可以直接支持XP,但是有可能會(huì)彈出警告。
26、如何設(shè)置全局快捷鍵、獲取全局鼠標(biāo)坐標(biāo)?
設(shè)置全局快捷鍵可以使用第三方庫(kù)qxtglobalshortcut。
獲取全局鼠標(biāo)坐標(biāo)可以用QCursor::pos()。
27、如何設(shè)置窗口快捷鍵,應(yīng)用程序快捷鍵?
C 的話,可以使用QShortCut類,QML可以使用ShortCut。
但是QShortCut和ShortCut,只在窗口或應(yīng)用程序在focus時(shí),才能使用快捷鍵,并非全局快捷鍵。
28、如何顯示系統(tǒng)托盤?
Qt5.8或以上版本,可以使用QML的SystemTrayIcon;或者使用C 的QSystemTrayIcon類。
Qt5.8以下的版本(不含5.8)只能使用C 的QSystemTrayIcon類。
29、Qt的動(dòng)態(tài)編譯文件太多,如何打包成一個(gè)文件?
使用Enigma Virtual Box,但是可能會(huì)被殺毒軟件殺掉。
使用NSIS制作成安裝包。
使用第14點(diǎn)的靜態(tài)編譯。
30、C 有哪些第三方庫(kù)?
除了C 自帶的庫(kù)(如STL庫(kù))以外的,還有第三方庫(kù)。
較為出名的是Boost庫(kù),推薦《Boost程序庫(kù)完全開(kāi)發(fā)指南》。
31、如何讓Qt運(yùn)行單一實(shí)例進(jìn)程?
可以使用QtSingleApplication。
32、如何實(shí)現(xiàn)命令行程序?
可以使用QCommandLineParser和QCommandLineOption。
???????????????? END ????????????????
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。