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

3 投票
6 回答
1596 浏览
提问于 2025-04-15 17:50

我觉得Python在Triforce上运行得很顺畅。一个在Windows上运行的程序也能在Linux上运行。这种想法对吗?

那么,如果我在Windows上用QT创建我的应用程序,它能在Linux或Mac上完美运行吗?

谢谢。

6 个回答

2

没错。你用Qt写的代码可以在Windows、Mac、Linux/X11、嵌入式Linux、Windows CE和Symbian等系统上直接运行,不需要任何修改。

5

正如其他人提到的,关键问题是确保你不要去碰其他非Qt的、非跨平台的API。其实,即使是其他非Qt的跨平台API,如果你选择使用Qt,就应该全心投入。Qt是一个功能全面的框架,通常来说,使用Qt会比转向其他东西更简单。这样做的好处是,你程序中的基本元素在不同地方的表现都是一致的。(比如,你在网络代码中用的QString和在界面代码中用的QString是一样的。)从可移植性来看,只要你在Qt提供的API范围内工作,它应该能在多个平台上运行。

当然,有些地方你可能需要调用一些Qt的函数,这些函数提供了一些特定平台的调整(比如,停靠图标),这样在所有三个平台上,你的应用可能不会立刻变得完美。但总体来说,你应该能保持一个在所有三个平台上都能编译和运行的应用。(尽量使用qmake或类似的构建系统,因为Qt应用的构建过程会根据平台有所不同,可能需要不同的参数等等。)

当你把Qt和其他API(比如OpenGL)混合使用时,会出现一些奇怪的问题,特别是在处理窗口和GL上下文的锁定方式上,OS X和Linux的处理方式是不同的。所以如果你打算在多个线程中使用OpenGL,建议你定期在其他平台上编译一下,以确保没有什么完全坏掉的地方。这也能快速指出你可能不小心使用了非跨平台的系统API的地方。

我曾和团队一起使用Qt开发一个多线程的3D多人实时网络游戏(也就是说,这是一个复杂的应用,充分利用了Qt的很多功能),我们对Qt在支持多个平台方面的能力感到非常惊讶。(我们在OS X上开发,同时目标是Windows,我也定期确保它在Linux上能正常运行。)我们只遇到了一些平台特定的bug,几乎所有的都是因为使用了非Qt的API,比如OpenGL。(这其实说明了,使用OpenGL进行跨平台开发比使用Qt要困难得多。)

在整个经历结束时,我们对处理平台特定bug所花的时间感到很满意。令人惊讶的是,尽管团队几乎没有人把Windows作为主要开发平台,我们还是能很顺利地为Windows制作一个GUI应用。

不过,记得要早测试,频繁测试。我觉得先写完整个应用再测试并不是个好主意。虽然在Qt中是可能的,但如果你没有编写可移植代码的经验或者对Qt不熟悉,这种做法不太可能成功。

8

是的。不是。可能吧。还有:Java和“写一次,到处运行”。

文件系统的布局、外部工具、你可能用到的像图标、字符编码的行为等等,这些都是你可能会遇到麻烦的地方。

如果你使用Qt和Python,并且尽量避免使用那些只适合Windows的库或行为,那么在Mac和Linux上运行这个应用会简单很多。但是对于任何复杂一点的应用,第一次有人尝试的时候,肯定会遇到问题。

不过,通过仔细选择框架和库,让应用能够跨平台运行,更多的是像修复bug,而不是传统意义上的“移植”。

撰写回答