使用Qt编写应用程序时,是否可以立即在不同的操作系统中运行?并且(如果我错了,请纠正我)您不需要在要执行应用程序的所有不同平台上安装Qt?
这究竟是如何工作的? Qt是否编译到所需的平台,或者是否捆绑了一些“dll”(libs),或者它是如何做到的?它是否与编写跨平台运行的Java应用程序不同。
如果您使用Python编写带有Python绑定的Qt应用程序,您的最终用户是否需要安装Python?
答案 0 :(得分:15)
Qt(理想情况下)提供源兼容性,而不是二进制兼容性。您仍然需要为每个平台单独编译应用程序,并使用适当的动态Qt库(它们也需要单独编译,并具有一些特定于平台的代码)。
对于你的最后一个问题,用户需要Python,Qt库和绑定库(例如pyqt),但有各种方法可以捆绑这些。
答案 1 :(得分:12)
PyQT [和它的开源堂兄PySide]是python的一个很好的跨平台QT绑定,但它不是一个神奇的解决方案,可以在不进行任何打包/安装程序维护的情况下为所有平台运送你的应用程序。我想也许你可能会期待一些魔力。
QT是一个用C ++编写的跨平台库。这意味着,您可以编写一次C ++或Python(或带有绑定的其他语言)代码,并创建一个“窗口”(窗体,对话框,屏幕上的某些内容)并使用控件(按钮等等)填充它并且不必处理在Windows,Linux和Mac OS X上制作按钮的平台差异。
因为它是一个库,所以它可以以多种方式打包。它可以是“静态链接”(内置于您的可执行文件/二进制文件/应用程序中)或“动态链接”(在Windows中称为DLL,共享库或在unix / linux上或作为框架,在mac os x中)。它并不总是“安装”在计算机上,除非它是共享库。
即使它“安装”到计算机上,该计算机上可能存在多个版本,因此将其视为计算机的扩展是不恰当的,而是应用程序的扩展(程序) )在你的电脑上。
如果您使用Python绑定进行QT,那么您的应用程序的安装包需要包含QT绑定的二进制文件(python扩展),基本的Python运行时环境,包括Python可执行文件和基本库,以及程序的源代码。可以将大部分内容打包成一个“捆绑”。例如,在Mac OS X上,所有这些都可以轻松地放入“.app”软件包中,在Windows和Linux上,我相信有一些打包和安装工具可以帮助您轻松完成这项工作。
即使您只需要为应用程序编写一次用户界面代码,您也不会神奇地获得同时在所有三个主要平台上发布应用程序的能力,而无需至少进行安装程序或包装的构建,分别为每个平台。用户希望下载适用于Windows或Mac OS X的安装/安装包,也许对于Unix / Linux,它还取决于您安装的分发版。
Update thanks to AdamW for this nokia link providing deployment information
答案 2 :(得分:5)
问题是您对“已安装”的定义。要让Qt工作,可执行文件必须能够访问正确的库。
当然,对于每个平台,必须生成不同的可执行文件和库(参见Qt docs)。
关于Python,如果要运行Python可执行文件,则必须安装它(以更传统的方式)。例如,除非你在Windows中使用py2exe运行。