Stay up to date with the latest marketing, sales and service tips and news.
作者:Kenny Zhang
感谢近百位Qt专业开发者参加了我们上周在北京、西安两地举办的Meet Qt技术沙龙活动,按惯例,工程师从众多提问中挑选了六个典型问题做简要回答,希望能解答更多Qt开发者的疑问。
问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
Stay up to date with the latest marketing, sales and service tips and news.
Download the latest release here: www.qt.io/download.
Qt 6 was created to be the productivity platform for the future, with next-gen 2D & 3D UX and limitless scalability.
Find webinars, use cases, tutorials, videos & more at resources.qt.io
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
Näytä tämä julkaisu Instagramissa.Henkilön Qt (@theqtcompany) jakama julkaisu
Qt Group includes The Qt Company Oy and its global subsidiaries and affiliates.