如果是仅仅做界面的话,Qt框架本身就是跨平台的,不需要额外的操作。但是如果涉及到一些和平台自身特性相关的操作的时候,这部分代码就无法实现跨平台了。针对平台特性相关的代码,我们采用宏定义和qmake,在不同的平台下执行不同的代码,从而实现跨平台。这里介绍一下,如何通过宏定义和qmake,实现项目的跨平台。
下面以一个获取系统CPU使用率和内存使用率应用为例,说明一下设计思路。例子中主要采用了两种设计模式:策略模式和单例模式。
通过采用策略模式,我们抽离出应用和系统相关的接口,然后通过子类化,添加系统接口在不同平台下的实现。类图如下所示:
SysInfo中抽离出了系统访问的接口,供Qt框架调用,在Windows系统中执行SysInfoWindowsImpl中的函数,在Linux系统中执行SysInfoLinuxImpl中的函数,在Mac系统中执行SysInfoMacImpl中的函数。我们将三个子类分别放置于三个不同的文件中,确