来源:嵌入式ARM
Qt一开始是由奇趣公司开发的,后来被Nokia收购了,然后再被Digia收购了。所以有的人会误以为Qt就是为了塞班系统而生,是个落伍的产物。
但是很多嵌入式软件、桌面工具都是用Qt来开发的,包括Quartus和Cadence也有用到Qt。
诚然,Qt也是类似于C#、JAVA那样,专门用来开发图形界面的,那么Qt有哪些特别的地方呢?以下,一一介绍。
1、Qt能在哪些平台使用?
这里的平台是指操作系统,不是指CPU。Qt可以在Windows、Linux、Android、iOS、mac OS、QNX、VxWorks下使用。
把Linux移植到ARM上,也是能跑Qt开发出来的软件的。
2、Qt是开源的,还是收费的?
是开源的,需要遵循LGPL、GPL协议。
3、Qt是使用什么语言开发的?
建议底层用C 做业务逻辑,上层用QML做图形界面。也可以纯C 开发,但是做界面时会比较累。
4、什么是Qt Quick,什么是QML,两者有什么关系?
Qt Quick只是一种技术名称,它本身不指代任何语言,但是,当别人说到Qt Quick一般是指用QML快速开发图形界面。
QML是一种类似于CSS和JAVA Script的混合语言,语法非常简单易学,适合没什么编程经验的人。
5、什么是Qt Creator?
Qt Creator是Qt官方的IDE,专门用Qt框架开发图形界面的。
6、除了Qt Creator,还有什么IDE可以用?
目前比较流行的是Visual Studio,简称VS。Qt Creator一安装好就能使用,但是VS是需要自己设置才可以用。
7、Qt Creator的原生编辑器有Vi / Vim模式吗?
有,叫Fake Vim,按照下图设置即可。
8、新手入门应该学哪个版本的Qt?
应该学最新的Qt5,推荐教材《Qt Creator快速入门》、《Qt Quick核心编程》,以及官方自带的英文文档。
9、哪里能找到Qt的官方文档?
打开Qt Creator,如下图,Help,就是了。
有某些方法,文档上并没有写,但是实际上是存在的。这时需要利用代码补全。
10、什么是pyQt?
pyQt是指用python脚本语言来调用Qt框架,从而快速开发图形界面。但是商业使用pyQt,是要收费的。
目前只有一本关于pyQt4的书——《PyQt编程指南》,但是现在最新的是pyQt5。
推荐《pyQt5参考手册》、《PyQt5 tutorial》。
11、我现在只学习C、C 语法,不做图形界面,可以使用Qt Creator编译、运行代码吗?
可以。Qt Creator自带MinGW编译器可以编译C、C 。但不是所有从Qt官网下载的安装包,都带有MinGW编译器,下载时需特别注意。
新建工程时,使用以下工程模板即可。
12、如何使用Qt开发3D图形界面?
可以使用Open GL,请参考《QT OpenGL教程》。
13、为什么随便写一个Hello World,编译出来都30几MB?
因为Qt默认使用动态编译,所以编译出来体积超大。可以使用UPX压缩壳。
14、怎样使用Qt静态编译代码?
请参考《Qt5.9.0 MingGW静态编译》,建议下载现成的静态库。
静态编译出来的文件非常大,建议使用UPX压缩壳。
其中,静态编译Qt5.7.0,需要卸载VC6.0,否则config不过。
15、怎样使用Qt发布应用?
动态编译的话,可以使用Qt Creator自带的windeployqt。
动态编译后,可以使用NSIS制作成安装包。
静态编译,再加UPX压缩壳,即可发布,而且是单一文件。
16、怎样把Qt的代码,移植到ARM?
你需要使用交叉编译器Arm Gcc,并设置硬件相关的参数。
17、Qt用在Android、OS X上面多吗?
不多,所以不建议使用Qt开发Android、OS X的app。
18、Qt用在哪些地方比较多?
嵌入式开发、桌面开发。
19、哪里能下载到Qt?
https://www.qt.io/download-open-source/#section-2
在官网注册账号,登录,就可以在以上页面下载Qt了。
不想注册的话,也可以使用国内的镜像。
http://mirrors.ustc.edu.cn/qtproject/official_releases/qt/
20、Qt4和Qt5有什么区别?
Qt4一行代码,即可全局支持中文,Qt5默认支持中文。
Qt4不支持串口,需要使用第三方的串口库,Qt5支持串口。
此外,Qt4和Qt5还有很多区别,这里不一一列举。
21、有哪些好用的Qt第三方库?
第三方库,不是Qt官方开发的,而是由其它组织开发的。
比较出名的是QWT库,使用QWT库,可以轻松搞定各种图形界面,如:饼状图、示波器图、波特图等。
然而,QT自带的QtCharts比QWT库还要好用。QtCharts支持C 和QML混合编程,而QWT只支持C 。
QWT已经很久不更新了,所以,有的人会使用qcustomplot,它也是一个画图的第三方库。
22、哪里可以在线浏览Qt的类?
http://doc.qt.io/qt-5/classes.html
23、哪里可以在线浏览Qml的类型?
http://doc.qt.io/qt-5/qmltypes.html
24、怎样读取USB设备的信息?
可以使用WIN32的API捕获USB的消息(#include
),或者使用libusb。
25、哪些版本的QT可以支持XP系统?
Qt5.7.0及之前的版本都可以支持XP。Qt5.7.0可以直接支持XP,但是有可能会弹出警告。
26、如何设置全局快捷键、获取全局鼠标坐标?
设置全局快捷键可以使用第三方库qxtglobalshortcut。
获取全局鼠标坐标可以用QCursor::pos()。
27、如何设置窗口快捷键,应用程序快捷键?
C 的话,可以使用QShortCut类,QML可以使用ShortCut。
但是QShortCut和ShortCut,只在窗口或应用程序在focus时,才能使用快捷键,并非全局快捷键。
28、如何显示系统托盘?
Qt5.8或以上版本,可以使用QML的SystemTrayIcon;或者使用C 的QSystemTrayIcon类。
Qt5.8以下的版本(不含5.8)只能使用C 的QSystemTrayIcon类。
29、Qt的动态编译文件太多,如何打包成一个文件?
使用Enigma Virtual Box,但是可能会被杀毒软件杀掉。
使用NSIS制作成安装包。
使用第14点的静态编译。
30、C 有哪些第三方库?
除了C 自带的库(如STL库)以外的,还有第三方库。
较为出名的是Boost库,推荐《Boost程序库完全开发指南》。
31、如何让Qt运行单一实例进程?
可以使用QtSingleApplication。
32、如何实现命令行程序?
可以使用QCommandLineParser和QCommandLineOption。
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。