0
点赞
收藏
分享

微信扫一扫

Qt、QML、Widgets有什么区别?

请记住,Qt是作为C++框架在C++中设计和编写的,您会发现许多在基于C++的应用程序中有意义的参考、示例和概念,它们可能与您的Python应用程序无关,但请记住,Qt for Python旨在通过许多修改将Qt框架公开给Python。您不需要了解C++就可以将Qt用于Python,稍后您可以找到这些语言之间的所有可能组合。

Qt

Qt项目是一个开放协作项目,协调Qt框架的开发。您可能会发现“Qt”指的是项目或框架。

作为一个框架,Qt有许多组件,这些组件由组件和模块分布。例如,qtbase是包含许多模块的基础组件,如:QtCore、QtGui、QtWidgets、QtNetwork等。所有这些模块都包含许多可以直接使用的类,如QtCore的类,从中可以找到QFile、QTime、QByteArray等类。

一方面,您可以创建没有用户界面的应用程序,同时使用这些类创建命令行应用程序、处理文件、网络连接、正则表达式、文本编码等。

另一方面,您可以使用QtWidgets模块(也称为Widgets)中的类创建图形应用程序。

还有许多其他Qt模块,如QtMultimedia、QtCharts、Qt3D等。这些模块具有特定的功能,在这些模块中,有一个称为QtDeclarative的模块,您可以在其中找到QML声明性语言的实现。这种语言类似于CSS和JSON,创建它是为了以声明方式设计UI应用程序,允许JavaScript处理一些命令部分,并允许其他组件使用C++扩展和连接代码。

让我们分别检查这些不同方法的功能。

Widgets

正如我们前面提到的,QtWidgets是一个模块,它提供预定义的小部件,您可以将其添加到图形应用程序中,如按钮、标签、框、菜单等。

基于Widget的应用程序看起来像一个本地应用程序,因为其目标是与其他包含的应用程序相比不影响用户体验。

注意:您可以调整这些应用程序以使用自己的风格,但您需要注意,小部件的目标是尊重系统风格,在更改颜色时要小心。查看这个简单的教程,了解如何做到这一点。

QML

与Widget相比,QML提供了一种创建用户界面的替代方法,它最初源于移动应用程序开发。与Qt Quick模块一起,它提供了使用轻触、拖放、动画、状态、转换、抽屉菜单等操作与移动设备交互的访问。

您可以在QML/Quick应用程序中找到的元素侧重于提供一个更动态的应用程序基础结构,该基础结构的不同属性基于某些行为。

尽管QML有动机为移动设备提供接口,但您也可以将其用于桌面应用程序。

此外,您可以使用标准JavaScript来扩展应用程序,与C++结合可以成为一个有吸引力的基础设施。

Python和C++

对于Qt For Python应用程序,您不需要了解C++,但可以在两种不同的用例中混合使用两种语言:

  1. 如果您有一个Qt/C++应用程序,您可以重新编写它,使其成为Qt/Python应用程序。这意味着Python旨在完全取代Qt应用程序的用户级C++代码。
  2. 对于用C++编写的自定义Qt小部件,您可以生成自己的Python绑定,以便人们可以直接从Python使用它。
  3. 如果您有一个用于Qt/C++应用程序的基于C++的库,该库负责特定的任务,例如performant进程,那么您可以为它生成绑定,因此人们可以从Python中使用它。
  4. 对于Qt/C++应用程序,您可以使用Python扩展它,方法是将主QApplication singleton作为Python绑定公开给Python解释器。例如,这可以理解为Qt/C++应用程序的“Python插件系统”。

对于第2步、第3步和第4步,您需要Shiboken的帮助,它是用于为Python生成Qt的绑定生成工具。您可以在文档页面中找到更多信息。


举报

相关推荐

0 条评论