正如其他海报所提到的,关键问题是确保您永远不会接触不同的非Qt非跨平台API。或者甚至是一个不同的非Qt跨平台API,如果你使用Qt,你就需要提交它,这是一个全面的框架,在很大程度上,坚持Qt比使用其他任何东西都容易。有一些很好的优点,因为程序中的基本原语在所有地方都可以以相同的方式工作。(也就是说,网络代码中的QString将与接口代码中的QString相同)从可移植性的角度来看,如果你留在Qt提供的API中,它应该可以在多个平台上工作。在
在某些领域,您可能需要调用一些Qt函数,这些函数提供了对某些平台比其他平台更重要的跨平台调整(例如dock图标),而且您不会立即在所有三个平台上都有一个完善的应用程序。但一般来说,您应该非常接近编译并运行这三种应用程序的应用程序。(也可以尝试使用qmake或类似的构建系统,因为Qt应用程序的构建过程因平台而异。不同的旗帜等)
当你将Qt与OpenGL等其他api混合使用时,会出现一些奇怪的问题,特别是windows锁定GL上下文的方式不同于OS X和Linux的方式,因此如果你打算在多个线程中使用OpenGL,请尝试在其他平台上定期编译,以确保没有任何东西被完全破坏。这也将快速指出您可能无意中使用了非跨平台系统API的领域。在
我和一个团队一起使用Qt构建了一个多线程的3-d多人实时网络游戏(阅读:充分利用Qt的许多领域的非常重要的应用程序),我们被Qt支持多个平台的能力的有效性震惊了。(我们在OS X上开发,同时针对Windows,我定期确保它仍然可以在Linux上运行)我们只遇到了一些平台特定的错误,几乎所有这些都是由于使用OpenGL等非Qt API引起的。(这应该告诉你一些事情,OpenGL在使用跨平台方面比Qt更困难。)
在体验结束时,我们很高兴我们只需要花很少的时间来处理平台特定的bug。令人惊讶的是,我们能够为windows开发一个GUI应用程序,因为几乎没有一个团队在整个项目中将它作为主要的开发平台。在
但要尽早并经常测试。我不认为你写一个完整的应用程序然后测试是个好主意。使用Qt是可能的,但如果您没有编写可移植代码的经验和/或是Qt新手,则不太可能。在