首页 文章

Python是否适合QML(Qt-Quick)?

提问于
浏览
27

我是Qt-Quick的初学者 . 我不知道Qt是QML的基础 . 而且我知道JS可以在QML层中做很多逻辑 . 但是如果我们需要与OS进行交互,那么我们必须使用一些基本语言 . 因为我对Python感到满意,所以我计划“ QML-JS-Python ”组合 .

所以,我的问题:

  • 对于高级应用程序和游戏开发Python和Qt-Quick是否能够携手并进?

  • 我的组合三重奏(QML-JS-Python)对此有用吗?

  • 我是否需要学习Qt for App开发以便与QML中的Python耦合?

  • 如果是Qust 3,那么我应该学习完整的Qt还是只有那几行代码作为Python和QML之间的通信门?

抱歉,如果我愚蠢地提出这些问题 . 但我想提出建议和意见 .

编辑:此组合QML-JS-Python的任何限制

提前致谢

2 回答

  • 29

    从概念上讲,它们很好地结合在一起 . 我写了一个python / qml / js / opengl程序,它很好地结合了一切 . 这与Qt4.7和PySide有关 .

    如果你只是使用QML,你可以最大限度地减少你需要接触的Qt量(尽管如此,更多的知识会让你变得更强大) . 基本上,一旦你有了qdeclarativeview,你的Qt工作就完成了信号/槽处理,这在PySide下是一种乐趣 . 我建议您可以使用Python和QML快速提高效率,而不必过多担心Qt方面的问题,并在必要时进行挑选 .

    根据经验,我建议在你自己的脑海中清楚地划分Python和QML之间的界限 . 我非常把QML限制在GUI逻辑上,这非常好;实际上,QML处理接口如何响应输入,然后它将信号发送回主程序 . 它有点像在GUI和程序的其余部分之间创建一个非常基本的,简化的接口,只发出高级逻辑信号(而不是,例如,发回一个点击,它会发回一个信号,例如“打开处理“,GUI将处理如何呈现该更改) . 在我的情况下,这只是直接插入我的MVC框架,但你可以按你喜欢的方式做到这一点 .

    尽管如此,还有一个重要的警告 . PySide的开发相当停滞,目前不支持Qt5及其所有QML改进的优点 . 关于如何支持它的讨论已有各种各样的讨论,但没有提交太多实际代码 .

    我相信PyQt支持Qt5,但双重许可为GPL或商业版(PySide是LGPL,因此可以与封闭源代码一起使用) . 除了它之外,我没有使用PyQt的经验,并且PySide大约相互替换掉了 .

    好像我在谈论将它用作MVVM .

    (任何限制问题):整个Qt通过PySide和PyQt公开 . 这意味着您可以像在C中一样在Python中编写扩展 . 我编写了一个捕获鼠标滚动事件的小部件,因此我可以从Flickable中窃取滚动 . 这是一个用Python创建的QML元素,不过我也必须从Python加载它;我无法弄清楚如何创建一个可以从QML文档中加载的扩展 . 当然可以编写一个独立于主代码的C扩展,因此您仍然可以使用该选项 .

  • 6

    截至2016年4月,PySide由Qt公司正式支持now .

    官方主页是here . LGPL许可是一种选择,这似乎是该项目首创的主要原因 .

相关问题