繁体   English   中英

Python中的Qt / C ++原型

[英]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使用和实践的例子。

过程

快速摘要:

  1. 使用PyQt在Python中编写应用程序
  2. 当被识别为热点时,将解耦的Python类转换为C ++
  3. 使用SIP为这些类创建绑定
  4. 用Python导入新定义的库代替Python对应的库
  5. 享受速度提升

一般细节:

使用PyQt在Python中编写应用程序。 小心保持关注点的良好分离,这样当您需要将片段移植到C ++时,它们将与其依赖项分离。 当你最终需要将某些东西移植到C ++时,用C ++ / Qt编写它,然后使用SIP为它创建绑定。 SIP有关于该过程的一本很好的参考手册 ,你以PyQt为例。

部署

C ++ - 对于许多应用程序,依赖关系非常简单,使用NullSoft的InstallerInnoSetup等工具创建安装程序并不困难。

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啜饮它就很难切换。

我会说PySidePyQt兼容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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM