DJ Capelis..

5

正如其他海报所提到的,关键问题是确保您永远不会触及不同的非Qt非跨平台API.或者甚至是一个不同的非Qt跨平台API,如果你使用Qt,你需要承诺它,它是一个全面的框架,并且在大多数情况下坚持使用Qt比去其他任何东西都容易.有一些很好的优点,因为程序中的基本原语将在整个地方以相同的方式工作.(即您的网络代码中的QString将与您的接口代码中的QString相同.)可移植性,如果您保留在Qt提供的API中,它应该在多个平台上工作.

在某些领域,您可能需要调用某些Qt函数,这些函数可以提供特定的跨平台调整,这些调整对某些平台比其他平台更重要(例如停靠图标),并且您不会立即在所有三个平台上都拥有完美的应用程序.但总的来说,你应该保持非常接近于编译和运行所有三个应用程序的应用程序.(尝试使用qmake或类似的构建系统,因为Qt应用程序的构建过程因平台而异.不同的标志等)

将Qt与其他API(如OpenGL)混合时会出现一些奇怪的问题,特别是Windows锁定GL上下文的方式与OS X和Linux的方式不同,因此如果您打算将OpenGL与多个线程一起使用,请尝试定期编译在其他平台上确保没有任何东西完全被破坏.这也将快速指出您可能无意中使用非跨平台系统API的区域.

我和一个团队一起使用Qt来构建一个多线程的3-d多人实时网络游戏(阅读:充分利用Qt的许多领域的非平凡应用程序)我们只是被效果所震撼Qt支持多种平台的能力.(我们在针对Windows的OS X上开发,我经常确保它仍然在Linux上运行.)我们只遇到了一些特定于平台的错误,几乎所有这些错误都源于使用非Qt API(如OpenGL).(这应该告诉你一些事情,OpenGL比使用Qt更难以使用跨平台.)

在体验结束时,我们很高兴我们需要花费很少的时间来处理特定于平台的错误.令人惊讶的是,我们能够为Windows制作GUI应用程序,几乎没有一个团队实际上通过该项目将其用作主要开发平台.

但要经常进行早期测试.我不认为你编写整个应用程序然后测试的方法是个好主意.使用Qt是可能的,但如果您没有编写可移植代码的经验和/或Qt的新手,则不太可能.