一、为什么选择qt

1、跨平台,一次写代码多个平台编译。使跨平台应用达到各个平台原生应用的体验与流畅度。相比与java或c#在开发图形计算方面的软件时有非常好的使用体验与流畅度。

2、使用C++编程虽然没有java写起来快速省心,但是也没有差多少。但是软件执行效率非常高。

3、非常适用于图像处理 方面的软件(图像处理与计算方面对速度要求很高)。同时C++有大量的图像视频等处理库和C++版本的图像处理算法。使得开发图像相关应用得心应手。

二、Qt收费吗,可以免费用吗

qt有收费版本和不收费版本。

1、收费版:就开发功能上是一样的,收费版多了一些开发辅助工具和售后服务。

2、免费版:是使用LGPL协议,在这个协议下,可以开发闭源商业软件(有一些前提要求)。

参考博客:

三、支持windows的哪些系统呢,支持xp吗

现在最新的qt5.12 支持 win7以及win7以上的所以windows系统,支持苹果系统,支持linux系统,不支持Windows Xp系统。想要开发的软件支持xp系统,则只选择Qt5.6以及小于5.6的qt版本。

1、qt5.6版本所支持的系统详情可以在qt的官网查看到,链接如下:

https://doc.qt.io/archives/qt-5.6/supported-platforms.html

2、qt5.6 WebEngine兼容xp的编译方法

https://stackoverflow.com/questions/31678657/qtwebengine-for-windows-xp-target

四、Qt下载地址

1、qt5.6下载地址如下:

http://download.qt.io/officialreleases/qt/5.6/

2、qt5.12下载

http://download.qt.io/archive/qt/5.12/5.12.3/

五、qt编译器的选择

qt在windows下开发可以选msvc和mingw。这两个都可以正常高效的在Windows下编译qt程序。有一些差别如下:

1、如果你打算支持xp系统,那么要注意msvc编译器从2015对xp支持变差,编译出的程序在xp运行会有bug和兼容问题。而mingw编译器没有这样的问题。

2、msvc编译速度比MinGW快。

3、当你的项目里面有对平台差异化函数的调用的时候,还是各自平台上原生的编译器对自己系统提供的系统函数支持好

4、当你开发的软件要发布macos linux windows 多个平台版本的话,由于Qt是一次编码多个平台上编译。所以在各个平台上用原生的编译器就可以了,用平台原生编译器可以在相应的平台快速稳定的编译出应用程序。

在windows下使用MSVC编译

在linux下用gcc编译器

在macOS下选择clang,clang兼容gcc并且编译更高效占内存少,错误提示更准确。当然也可以在macos上选择gcc

引用自“”

GCC通常是跨平台软件的编译器首选。有别于一般局限于特定系统与运行环境的编译器,GCC在所有平台上都使用同一个前端处理程序,产生一样的中介码,因此此中介码在各个其他平台上使用GCC编译,有很大的机会可得到正确无误的输出程序

六、用widget开发还是qt quick 

区别一

widget开发是qt开发的标准界面库,对应于visual studio 的Winform和WPF开发

Qt Quick是现在流行的使用网页开发技术开发软件界面的一种技术。

区别二

widget开发语言 C++和可视化拖动创建界面

Qt Quick开发语言 QML +Js 

知道了上面的区别之后,就好决定你的项目使用哪种开发技术了。

1、widget适用于开发专业的应用程序,软件需求界面高度复杂定制化

比如要显示实时波形,excel,photoshop,与下位机通信之类的软件。这类软件用网页技术开发非常费劲甚至无法实现。

2、Qt Quick适用于展示数据,填写表单数据,图形展示之类的应用:

移动开发(安卓和ios应用)、嵌入式设备使用的动态触摸式界面和轻量级应用程序的开发。阅读类软件,音乐播放器,软件商店,轻便聊天工具的界面等轻量级的展示和交互类的软件。这类软件用widget开发反而复杂厚重。

七、widget开发外观可以高度定制化开发吗

widget开发软件界面中,默认的界面也是和winform一样丑丑的,但widget可以通过指定控件的stylesheet来充分定制控件的外观,而不用找什么第三方美化控件。指定控件的stylesheets是使用了网页技术中的css样式,在Qt叫做qss。再加上Qt的layout动态布局功能。可以实现非常好看的软件。这一点比winform好。外观高度定制修改和wpf是一个水平。

个人更喜欢WPF可以手工写xml非常灵活。Qt widget的".ui"界面文件只支持可视化拖动不够灵活。想要灵活制作UI只能通过直接写C++代码实现。

八、是否支持国际化

Qt对国际化支持很完善。而且动态布局可以避免不同种语言文字长度不同而导致的界面文字显示不完整问题。同时满足从右向左的语言书写需求。

九、用哪个IED开发好呢

如果你的应用只在windows下安装使用。那么按照使用习惯用QtCreater或Visual Studio都很方便。

如果你要做跨平台应用开发还是Qt creater最好。QtCreater 开发的好处:

  1. 工程文件在各个平台直接可以使用
  2. 使用方法与操作步骤在各个平台都统一
  3. 使用visual studio + qt 插件 到设计“.ui”界面文件的时候,还得靠QtCreater 开绘制,比较麻烦

十、开发中各种标准库图形处理库齐全吗

很多常用算法实现都是C++的库可以开发出丰富高效的应用程序,这里举几个常用库的例子:FFmpeg,opencv,GLC,glut

十一、跨平台开发时候,调用第三方库需要注意什么

第三方库的提供方式一般有:.a   .so   .dll  .lib 源码

其中 .a 和 .so  是只能用在Linux和macos系统的。

其中.dll和.lib是只能用在windows系统平台下。

当你的qt应用程序需要跨平台调用同一个库的时候,只能是以下几种方式:

1、这个三方库,即提供了Windows平台对应的库也提供了Linux平台的对应的库,以及其他你需要的平台对应的库。

2、这个库是有源码的,并且可以通过源码编译获取各个平台上可用的库。

十二、为什么大厂不用Qt开发跨平台软件

首先在PC软件领域对跨平台最好的界面库就是qt了,但是在实际中发现大公司在每个电脑系统平台上都是使用原生开发,并没有使用Qt,这是为什么呢?

使用Qt开发了一个软件之后,得到的体验如下:

1、Qt的安装包太大,由于qt的库不是系统自带,就导致安装包包含了很多qt的基础库。(ubuntu自带qt库)

2、Qt的ui是可以通过qss高度定制外观,一次编写多处编译,但是不同操作系统,操作习惯和交互体验不同,这就导致qt开发的应用不能两头兼顾,从而导致和原生开发的软件有明显的不同体验感。

3、大公司资金充足,因此为了更好的用户体验,选择各个平台使用原生开发。

十三、Qt的缺点

1、使用C++开发,开发语言本身的学习成本和使用成本比上层的语言(c#,java)要高挺多。

2、C++在写图形界面的时候显得啰嗦,写好多代码才能实现最终的效果。尤其.h文件和.cpp文件要分开写。实际体验是开发效率低(相比而言)。

3、即便是qt对C++的内存管理作了优化,但是大部分的地方还是要自己管理内存,使得写程序变得小心谨慎。刚入门者更是一头雾水。

4、在qt中,网络和定时器不能跨线程访问,只能在一个线程中打开、操作、和关闭;但是这个问题可以通过信号和槽来解决,网络只在一个线程操作,外部线程需要进行网络操作的时候使用信号和槽即可。信号和槽不仅提供了一种回调函数机制,还提供了线程之间自动切换功能。这样分析过来,是qt限制的严格,虽然开发时候感觉绕,但是这样开发的程序比较稳健。

5、软件奔溃提示信息几乎没有。只能借助操作系统的奔溃捕获来获取部分奔溃信息,比如使用breakpad。平时调试只能用操作步骤稍多的单步调试和log打印。

6、macOS平台下的QtCreater不稳定,经常查看定义跳转不动,有些不应该报错的问题需要删除了生成文件,完全重新编译就没有了。

7、当然跨平台的主要优点和C++的优秀性能。还是“瑕不掩瑜”的。(这里表示如果你的需求是跨平台和高性能,那你就选Qt)。

十四、什么行业用Qt开发?

前面谈到qt相比较其他开发平台的优缺点。无论如何在国内有一些行业软件确实主要使用qt开发,也就是说qt在国内有一定比例的市场。因此对于开发qt的程序员来说也是有前景的。

使用Qt开发软件的行业包括:医疗器械、电力行业、化工等检测仪器、军工等。

那么这些行业为啥要选择Qt呢,据我了解的几个原因如下:

1、这些行业的软件在使用qt之前都是使用VC++开发,而VC++逐渐没落,图形开发简陋死板,不容易开发出漂亮的界面。Qt同样是使用C++开发因此各个行业之前用VC++写的类库都能再次利用起来。因此在硬件相关企业应用最广的现在是Qt。

2、使用QT开发可以跨平台,对于做硬件相关的行业来说,简直是一大便利。

3、Qt支持嵌入式开发,对于硬件厂商想要在机器上安装一个触摸操作的屏幕(嵌入式Linux开发)使用Qt开发非常稳定便捷。

4、对于实时性要求高的测量计算,C++还是比其他解释型语言要快。而且不需要解释型语言要求的运行环境,从而节省了大量储存和运算量。因此Qt程序对嵌入式芯片的性能就要求不高,从而节省了硬件成本。这几个优点在Qt嵌入式开发中尤其明显。