[英]Prototyping Qt/C++ in Python
我想用Qt编写一个C ++应用程序,但是首先使用Python构建一个原型,然后逐渐用C ++替换Python代码。
这是正确的方法,我应该使用哪些工具(绑定,绑定生成器,IDE)?
理想情况下,所有内容都应该在Ubuntu存储库中可用,因此我不必担心不兼容或旧版本,并且使用简单的aptitude install
设置所有内容。
是否有关于此过程的全面文档,或者我是否必须学习每个组件,如果是,那些是哪些?
现在我有多种选择:Qt Creator,因为很好的自动完成和Qt集成。
Eclipse,因为它支持C ++和Python。 埃里克(还没用过)Vim
PySide因为它正在使用CMake和Boost.Python,所以从理论上讲它会更容易替换python代码。 PyQt因为它被更广泛地使用(更多支持)并且可以作为Debian包使用。
编辑 :因为我必须将程序部署到各种计算机,C ++ - 解决方案将需要1-5个文件(程序和一些库文件,如果我静态链接它),使用Python我必须构建PyQt / PySide / SIP /在每个平台上都有,并解释如何安装Python和其他所有东西。
我想用Qt编写一个C ++应用程序,但是首先使用Python构建一个原型,然后逐渐用C ++替换Python代码。 这是正确的方法吗?
这取决于你的目标。 完成这两项工作后,我建议您尽可能合理地使用Python。 虽然它需要一些纪律,但是用Python编写非常大的应用程序是非常可能的。 但是,当您发现可以在C ++中更好地处理的热点和事物时,您当然可以将相关部分移植到C ++中。
是否有关于此过程的全面文档,或者我是否必须学习每个组件,如果是,那些是哪些?
这是我推荐的各种作品:
EDITOR / IDE :使用您熟悉的任何编辑器/ IDE,但我强烈推荐一种支持重构的编辑器/ IDE。 如果您对Eclipse感到满意,请使用它。 如果你想主要使用C ++路线并且你对任何编辑都不太熟悉,那么使用QtCreator可能会更好。 Eric是一个非常好的Python IDE,支持重构,除非你要做很多C ++,看看它。 更好的是,它的源代码是一个很好的PyQt使用和实践的例子。
过程 :
快速摘要:
一般细节:
使用PyQt在Python中编写应用程序。 小心保持关注点的良好分离,这样当您需要将片段移植到C ++时,它们将与其依赖项分离。 当你最终需要将某些东西移植到C ++时,用C ++ / Qt编写它,然后使用SIP为它创建绑定。 SIP有关于该过程的一本很好的参考手册 ,你以PyQt为例。
部署 :
C ++ - 对于许多应用程序,依赖关系非常简单,使用NullSoft的Installer或InnoSetup等工具创建安装程序并不困难。
Python / PyQt - PyQt应用程序安装起来有点困难,因为它依赖于Python并且依赖于Qt库的存在。 一个人记录了他在ARSTechnica的这篇文章所做的努力。 py2exe在Windows上工作得很好,应该可以正常工作。 与Python源一起提供的IME, freeze.py ,有时会确定哪些共享库是真正必要的,有时最终会创建一个不存在依赖关系的二进制文件。 Py2app可以在Mac OS X上运行 。
但更糟糕的是PyQt / Qt许可。 如果您正在开发商业应用程序,则需要拥有商业PyQt(和Qt)许可证,并确保防止用户因许可限制而轻易修改源代码或以其他方式针对PyQt / Qt API编写代码。 因此,PyQt作者创建了一个名为VendorId的工具(尽管它有Python许可证)。 在VendorId中是一个名为SIB的工具,可用于创建仅依赖于Python解释器的可执行文件。 但是,如果你打算走这么远,你可能想要在你的应用程序中安装自定义Python。
免责声明 :我根本没有使用过PySide ,所以我不确定它与PyQt的比较。 另外,请在其网站上注明以下警告:
PySide正在进行中,尚不适合需要生产级稳定性的应用程序开发。
但是,好的一点是,他们打算,至少在初始版本中“保持与PyQt的API兼容性”。 因此,除了C ++绑定之外,您可以稍后在两者之间轻松切换。
如果您只是在学习Qt并希望利用Python为您提供的原型设计速度,那么我建议您使用PyQt
创建一个示例项目。 正如你所说,有一个debian包,所以你只是一个简单的方法apt-get
远离你的第一个应用程序。
我个人使用gVim
作为我的Python / Qt编辑器,但你可以毫不费力地使用任何Python友好的编辑器。 我喜欢WingIDE
并且他们已经为Qt自动完成了,但是一旦你从vim kool-aid啜饮它就很难切换。
我会说PySide
与PyQt
兼容95%并且LPGL
许可证很好,但是如果你只想尝试原型化你的第一个Qt应用程序,那么我认为没有真正的理由使用PySide
。 虽然,我更喜欢PySide
文档,但您也可以使用它们并用PyQt
替换所有库引用。
根据您正在构建的应用程序的复杂性,最好从头开始使用C ++版本,而不是尝试做一堆SIP
重构黑魔法。 一旦掌握了Qt框架,您就可以非常轻松地在C ++和Python绑定之间切换。
在开始编写原型代码之前,我会绘制UI模型。 这有一些好处:
比编码原型更快,因为不涉及编程
使用数据快速填充窗口小部件(如表和树)
在屏幕上添加说明和注释
无需捕获屏幕即可轻松将模型集成到规范文档中
在实现之前验证UI设计概念
有很多工具可以帮助你做到这一点,但如果你打算使用Qt, MockupUI可能是一个不错的选择,因为它为Windows 7,8或10渲染Qt小部件的原生样式,这使你的模型看起来更真实。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.