我能轻松移植Qt应用程序吗?

时间:2011-09-18 15:30:31

标签: c++ qt testing ide

如果我创建了一个Qt二进制文件,那么启动它的用户不需要在他们的计算机上安装Qt吗?也就是说,它就像是MFC的原生支持 - 它从各处开始(在Windows上,如果它是作为exe构建的)?我知道库应该是静态/包含的,所以,但我只询问Qt兼容性。

另外,如果我在Windows上创建一个Qt项目,我是否需要一些额外的工作才能在Linux上使用这个项目,因为Qt的版本是相同的?那Mac怎么样?

4 个答案:

答案 0 :(得分:3)

除非您静态链接可执行文件中的Qt库,否则必须在目标计算机上安装Qt库。 (我推荐这个,产生的二进制文件将是巨大的。)

根据您使用Qt的许可证,您还可以随应用程序一起提供所需的Qt DLL。

至于便携性,Qt非常好。它应该在Mac和Linux上按原样编译和运行。 (可能的问题在于文件路径等,但是如果你总是使用Qt API,有办法可靠地和可移植地工作。)

答案 1 :(得分:0)

我不同意Mat - 除非应用程序是专门设计和编写的,并且始终考虑到可移植性,否则必须进行许多更改才能在Linux和Mac上进行编译,运行和查看。 Qt使这个过程更容易,但它并非完全无痛。

答案 2 :(得分:0)

在第一次运行时,UI在其他系统上看起来很难看。 Qt首先是一个统一的UI创建系统;同时,在Windows中,菜单是窗口的非客户区域的一部分,在Mac上,它在窗口之外(在屏幕顶部),而在Linux上它只是客户区域中的控件之一。统一那个。并且不要让我开始研究Linux上的小部件多样性。

所以是的,将会有非零移植的努力。

答案 3 :(得分:0)

我认为这里有几个不同的问题需要考虑:

  1. 让您的Qt程序在各种平台下编译

  2. 在各种平台上部署Qt程序(以便“正常” 用户“可以安装并运行它而不会有太多麻烦”

  3. 调整你的Qt程序的外观(以便它看起来像 “本地”尽可能在其运行的各种平台下运行)

  4. (1)主要是在程序中避免使用特定于平台的API。如果你坚持使用Qt和STL API,你应该没问题。或者,如果您必须使用某些特定于平台的功能,您可以通过#ifdefs为每个平台执行此操作,或者为每个平台提供单独的.cpp文件,但如果可能,这是最好避免的麻烦。

    (2)不同平台需要稍微不同的步骤;有一些关于它的文档here

    (3)对您来说可能是重要的,也可能不重要(这取决于您关心您的程序在每个平台上看起来像是本机应用程序)。如果它很重要,那么我认为没有办法在每个目标平台上手动尝试你的程序并调整它直到它看起来“恰到好处”该平台。它有助于设计您的GUI代码,以尽可能少地进行硬编码假设(这样Qt的QStyle层可以根据当前平台自由选择'正确的东西'。)