如果我使用QT For Windows,我的应用程序在Linux/Mac/Windows上运行得很好吗?

Ser*_*pia 5 python qt cross-platform

我对Python在Triforce中顺利运行的印象很深刻.在Windows中运行的程序将在Linux中运行.这种情绪是否正确?

话虽如此,如果我在QT For Windows中创建我的应用程序,它是否会在Linux/Mac中运行完美?

谢谢.

Nic*_*ght 8

是.不,也许吧.另请参阅:Java和"一次编写,随处运行".

文件系统布局,外部实用程序,您可能使用停靠图标,字符编码行为等等所做的任何事情都可能会遇到麻烦.

使用Qt和Python,并极力避免事情,似乎依赖于Windows的特定库或行为,尽可能将运行在Mac和Linux更容易申请,但对于任何不平凡的申请,第一次有人尝试它,它炸掉他们的脸.

但是通过仔细选择框架和库,使应用程序跨平台工作将更像是修复bug而不是传统的"移植".


DJ *_*lis 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的新手,则不太可能.