The blog is moving to a new host on Monday 2nd of September. The comments are disabled during the migration.
Richard Lin

北京、西安Meet Qt技术沙龙问答环节

Published 星期四 六月 27th, 2019
Comments Off on 北京、西安Meet Qt技术沙龙问答环节
Posted in qt-blogs-chinese, qt-labs-chinese | Tags: ,

作者:Kenny Zhang

感谢近百位Qt专业开发者参加了我们上周在北京、西安两地举办的Meet Qt技术沙龙活动,按惯例,工程师从众多提问中挑选了六个典型问题做简要回答,希望能解答更多Qt开发者的疑问。

%e5%be%ae%e4%bf%a1%e5%9b%be%e7%89%87_20190627144504

问1:能否介绍下Qt WebEngine?Qt Webkit迁移到Qt WebEngine有哪些需要注意的地方?

答:WebEngine来源于Webkit,Webkit之前主要由苹果和谷歌两个公司贡献代码,但是后来Google推出自己的新分支Blink,即Chromium的内核,WebEngine就是基于Chromium。因为Blink在性能、跨平台等方面的原因,Qt5.4版本开始引入WebEngine,Qt5.6以后,Qt删除了WebKit部分,转向了WebEngine。而且Chromium的跨平台特性、功能以及对H5新特性的支持更好,这也是我们要用QtWebEngine替换QtWebKit的原因。

关于Qt Webkit如何迁移到Qt WebEngine,可以参考Qt官方文档:

https://doc.qt.io/qt-5.12/qtwebengine-platform-notes.html

https://doc.qt.io/qt-5.12/qtwebenginewidgets-qtwebkitportingguide.html

 

问2:Qt如何适配国产操作系统如中标麒麟、锐华、道系统等平台?

答:Qt具备优秀的跨平台特性,能够适配多种国产操作系统,如中标麒麟、锐华(Reworks)、道系统(DeltaOS),并且支持多种CPU架构,如X86/PPC/ARM及龙芯MIPS。对于国产操作系统,Qt专业服务能够提供多种操作系统平台与Qt的适配以及项目的移植服务,有相关需求的朋友可以进一步咨询我们的客户经理了解情况。

 

问3:Qt必须使用system V的IPC吗?

答:Qt 是一个跨平台的应用框架,其进程间通信(IPC)机制当然可以使用所在平台的进程间通信机制,例如Linux下的管道(Pipe)、信号(Signal)、消息队列(Message)、共享内存、信号量(Semaphore)、套接字(Socket),其中包括System V 提供的IPC方式——消息队列,信号量,共享内存;Windows平台上的Message机制、共享内存、文件映射、管道、Socket等。

Qt对一些许多平台共有的IPC机制进行了封装。在Qt应用程序中,提供了以下几个方法来实现进程间通信(IPC):

(1)TCP/IP

跨平台的Qt Network模块提供了网络编程高级类(例如QNetworkAccessManager、QFtp)和一些较底层的类(例如QTcpSocket、QTcpServer、QSslSocket)。

(2)Shared Memory

跨平台的QSharedMemory——共享内存类,提供对操作系统的共享内存的实现。

(3)D-Bus

Qt的D-Bus模块是一种可用于使用D-Bus协议实现IPC的唯一Unix库。它将Qt的信号和槽机制延伸到IPC级别,允许由一个进程发出的信号被连接到另一个进程的槽。

(4)QProcess

跨平台类QProcess可以用于启动外部程序作为子进程,并与它们进行通信。

(5)Session Management

在Linux/X11平台上,Qt提供了会话管理的支持。

 

问4:Qt是否支持自研数据库集成到Qt的SQL驱动中?

答:

Qt提供了两种API用于创建插件:一种是高阶API,用于扩展Qt本身的功能,如自定义数据库驱动,图像格式,文本编码,自定义样式等;一种是低阶API,用于扩展Qt应用程序。如果您想创建自己的SQL驱动并集成到Qt中,可以子类化QSqlDriver和QSqlResult这两个类,并重新实现它的一些虚函数。

关于插件创建请参考:https://doc.qt.io/qt-5/plugins-howto.html

如何添加自定义数据库驱动请参考:https://wiki.qt.io/How_to_write_a_SQLDatabase_Driver

 

问5:Qt可以用来做点云或者其他三维渲染开发吗?是否适合与widget结合开发军工或者工业类应用软件?

答:

Qt支持2D/3D风格的数据可视化呈现,其中Qt Data Visualization模块提供了一种快速响应的、复杂、动态的三维可视化方法,能够支持三维条形图、散点图和曲面图的可视化呈现,内置多种不同风格的渲染主题,可以进行观察视角的调整,其中Q3DScatter 能够支持点云等三维数据的渲染。此外Qt提供了OpenGLWidget窗口控件可以结合OpenGL的功能。Qt也可以加载VTK为支持Qt而提供的QVTKWidget。

 

问6:Qt Creator在编译应用程序时耗时较长,有没有优化方法?

答:

首先,Qt creator只是一个IDE,不是编译器,编译快慢与Qt Creator无关,要看具体使用的是什么编译器。一般来说Windows下就是MinGW的gcc和Visual Studio的nmake,在Windows下推荐使用VS编译器,能够加快编译速度;如果是其它平台,可以尝试LLVM的Clang。

其次,可以配置PRECOMPILED_HEADER,添加预编译头文件(PCH,PreCompiled Headers)支持:

CONFIG+=precompile_header

PRECOMPILED_HEADER=stable.h

最后,可以采用并行编译方式,在.pro里加入下面一行

QMAKE_CXXFLAGS += /MP

同时起多个编译进程并行编译不同的cpp

 

Posted in qt-blogs-chinese, qt-labs-chinese | Tags: ,

Get started today with Qt Download now