Qt开发需要学习哪种语言?

时间:2011-02-07 04:57:36

标签: qt pyqt

我是编程新手。我有一些C ++知识并学过Python。

现在我想开发一个Qt Gui应用程序。我应该使用哪种语言进行Qt开发C ++或Python与PyQt。我发现Python很容易用语言。

5 个答案:

答案 0 :(得分:13)

这个问题没有明确的答案。随着那说......

您经常听到的利弊

  • Python很简单,C ++很难(在 与Python比较)

  • C ++很快,Python很慢(所以 说性能明智。

实际上......

这两个参数都可以是真或假,你可以制作慢速的C ++程序,但你也可以制作快速的Python程序,你也可以说如果你知道它真的很好等C ++就不那么难了。

Qt是用C ++编写的,所以文档示例都是用C ++编写的。这不是一个真正的问题,因为很容易将它移植到Python。虽然我发现使用状态机的动画导致PyQt和PySide的分段错误并不是那么稳定。

那么选哪一个?

取决于您的技能和任务。如果它正在工作你正在做你最了解的事情,并评估你实际需要多少速度,而不是每个应用程序都需要更低级别的代码。

如果您了解Python,您可以开始使用Python构建原型,然后移植到您认为很慢的C ++部分并将它们绑定回Python(例如使用SIP),甚至将整个应用程序移植到C ++。这种方法也很有效。

但即使你用Python编写了整个应用程序,我怀疑你和你的客户在使用C ++时会注意到“慢”或“坚牢”。这些事情通常取决于程序员的技能。

结论

完全取决于您选择最适合自己的内容并了解您的应用确实需要什么,但在大多数情况下,这两种语言都可以胜任。

如果你真的需要,我的主观建议是使用Python和端口转换为C ++。这个建议的唯一原因是你不需要像在C ++中那样输入Python,但这也可以被视为一个愚蠢的原因。

答案 1 :(得分:5)

我刚用PyQT完成了一个相当大的项目......我认为你的选择应该取决于三个因素:

  1. 您的受众群体有多大(少 超过100个安装?更多?)

  2. 您需要多少功能? (数据库+图形+绘图+ 信号分析+网络接入+ 等等等等?

  3. 多快 无论是现在还是现在,你都需要发展 未来?

  4. C ++ / QT非常适合1)大受众,2)中低功能,3)慢速到中等的开发速度。当然,如果有足够的时间和金钱,你可以用C ++做任何

    Python / PyQt非常适合1)小型受众,2)任何级别(包括高级)功能,以及3)中等到快速的开发速度。

    Python / PyQt的好处是:

    • 您不必过于担心数据类型,头文件以及许多其他令开发速度变慢的问题,并且您可以在世界级的解释环境中工作,因为它能够促进快速而强大的开发。
    • 你可以选择像matplotlib,scipy,sqlalchemy和configobj这样的大型第三方库,它们可以使复杂的任务变得非常简单。

    Python / PyQt,恕我直言的缺点是:

    • 在某些应用程序中可能会有较慢的性能(谁在乎?这通常有多重要?)
    • 部署起来可能要困难得多。 Py2exe需要相当多的调整才能让第三方库工作,然后你仍然需要构建一个安装程序并使其正常工作。然后,每当有人安装您的应用程序时,您可能会在内容中内置10到100MB的不必要的依赖项。

    就个人而言,我在工程研发环境中工作,在这种环境中,快速周转和广泛的数据分析/可视化是关键,而且通常只有几十个(精通技术的)人员进行部署。 Python / Pyqt是 clear 的选择。但是,如果我要开发一个简单的,广泛部署的应用程序,比如bittorrent客户端或其他东西,我会一直使用C ++。

    其他说明:

    • PySide(一种免费的LGPL替代PyQt)正在迅速发展,似乎肯定会让PyQt脱离水中;我计划在接下来的几个月内进行切换,但截至目前,仍有一些第三方图书馆没有为此设置。

    • Pyside的文档很多比PyQt更好;如果您需要帮助,比如“QListView”,只需搜索谷歌“Pyside QListView”。

    • 我建议您只在需要的地方使用PyQt。例如,当你可以使用SqlAlchemy时,不要乱用QtSQL(调试是一场噩梦),当你可以使用真棒库ConfigObj时,不要搞砸Qt的配置系统。

    • 安装Python / Pyqt / etc的明确方法是使用发布版Python(x,y) ...其中包括:Python,PyQt,Qt,Eclipse,PyDev,QtDesigner,Spyder,iPython ,以及许多有用的科学和计算库。自行编译和安装这些东西并不好玩。

答案 2 :(得分:4)

除了rebus提供的参数之外,我还要补充一点,Python中的开发和维护时间被认为比C ++快2到10倍(在Prechelt和{{3}的论文中})。这是Python的另一个重要优势,您可能需要考虑。

答案 3 :(得分:1)

我选择Python和PyQt4的主要原因是:

  • 可读性:我无法用C ++思考。我如实不能。另一方面,Python非常接近英语,因此我发现浏览和调试更容易。

  • 速度:我发现Qt4在C ++和Python中的工作方式几乎相同,只是在内部工作很少的简单应用程序中使用它。我用Python编写了一个book binding application,因为它基本上是一堆CLI工具的前端,所以没有明显的性能滞后。

  • 快速开发:如果您可以用文字书写,您可以用Python编写。当我必须在我的程序中实现一个新功能时,我只是打开了源文件夹(它只包含几个文件。将 与C ++的标题混淆比较),并将其添加进去。当然我我不得不调整它以便以后更快地工作,但我的主要观点是,因为语言是可读的,所以很容易编码,因此提高了工作效率。

但只是为了平衡权衡双方,这就是我不喜欢的Python和Qt4:

  • 示例代码:祝您好好找一些PyQt4示例应用程序。与C ++ Qt社区相比,社区规模相当小,所以不要指望有大量的例子。

  • IDE :我使用Gedit进行编码,所以这对我来说不是一个大问题,但在我设计GUI时确实需要一些黑客攻击。您必须欺骗Qt Designer以Python兼容的方式推广您的小部件(比如证明假的头文件名以便模块正确导入),以及其他类似的东西。没什么可认真的。遗憾的是无法使用Qt Creator IDE。它基本上是类固醇的GUI设计者,但它看起来不错,就像Visual Studio for Qt。

  • 速度:如果你的应用程序做了一些非常繁重的工作,我会坚持使用C ++。 Python适用于算法事物,但对于原始数字处理能力,C ++是胜利者。

  • 部署:要将Python应用程序编译为二进制文件,您需要使用PyInstallerPy2exePy2App来完成一些神奇的工作。这是一个非常痛苦的过程(至少对我而言),但这是你为解释语言付出的代价。 C ++只是编译并准备好了。

我希望这有助于你的决定。祝你好运!

答案 4 :(得分:-1)

学习C ++。 C ++的执行速度比Python快,而且Qt不是Python本机的事实也会使事情略微减慢。此外,在这一点上,C / C ++中的第三方软件远远多于Python。您现在可能不需要它,但在未来的路上您可能想要链接到其中一些。

编辑:看起来有点困难我看到EOL是对的,有很多Python支持主要的库,但不是像lunayorn指出的那样。尽管如此,在所有这些情况下,Python用户仍然依赖于绑定,这些绑定本质上可能会滞后于库的开发并为bug增加额外的可能性。

由于我还没有回应他人帖子的信誉,让我在这里说,rebus'声称它是所有程序员相对的,C ++或Python可以同样快速完全(并且危险地,速度在哪里)很重要!)错了。 Python的易用性带来了不可避免的性能成本,请参阅解释与直接执行语言的维基百科条目。我从直接经验中知道,Matlab以Python的方式解释,比C ++执行第2行完整数量级的行。 Python和Matlab最好被认为是(至少在Matlab的情况下,最初是用作)与C或Fortran等语言编码的库的接口。对于性能问题使用C ++的严肃大型程序。