• 《快速掌握QML》第一章 初识QML


    第一章 初识QML

    目录

    配置开发环境

    一个简单的QML程序

    本章小结


    在本章,我们会学习如何快速搭建QML开发环境,并通过一个简单的QML程序了解它的神奇之处。相信在阅读完本章后,我们会感受到用QML开发的快乐。

    配置开发环境

    其他教程会指导我们如何去下载Qt Creator,然后在这个编辑器里面编写QML代码,不过这样会涉及到C++。笔者想在这个教程中使用Python,通过PyQt搭配QML来实现开发,编辑器用的是VS Code。虽然不是正统的QML开发环境,但配置起来挺方便的。本教程是《快速掌握PyQt5》的姊妹篇,笔者会把重心放在QML上,但也会讲到一些跟PyQt相关的知识点。

    注:虽然编程语言是Python,但QML的知识点是一样的。读者可以把QML代码复制到Qt Creator中运行。

    第一步:下载PyQt5库

    Windows系统

    pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple

    Linux系统

    sudo apt-get install python3-pyqt5

    MacOS系统

    pip3 install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple

    第二步:验证安装

    下载完毕后,如果能在命令行窗口中成功导入,则安装成功。

    第三步:下载VS Code并安装QML插件

    前往VS Code官网下载这个软件,下载完毕后我们在插件市场中搜索QML,如下图所示。

    我们选择第一个和第三个QML插件,开发者分别是Baptist BENOIST和Thomas Vogelpohl。前者是QML语法高亮插件,后者则用于代码提示。

      

    一个简单的QML程序

    在VS Code编辑器中新建两个名称分别为demo.qml和demo.py文件,如下图所示。

    首先在demo.py文件中输入以下代码:

    1. import sys
    2. from PyQt5.QtWidgets import QApplication
    3. from PyQt5.QtQuick import QQuickView
    4. from PyQt5.QtCore import QUrl
    5. if __name__ == "__main__":
    6. app = QApplication([])
    7. view = QQuickView()
    8. view.setSource(QUrl('./demo.qml'))
    9. view.show()
    10. sys.exit(app.exec())

    代码解释:

    这其实就是PyQt的入口程序,我们这里实例化了QQuickView对象,并调用setSource()方法设置要运行的QML文档,最后再调用show()方法显示即可。

    当我们在demo.qml文件中编写好QML代码后,只用运行demo.py文件就可以出现窗口了。我们现在可以不用动demo.py文件中的代码,如果有需要修改的话,笔者会在教程中特别说明。

    现在在demo.qml中输入以下代码。 

    1. /* 1 */
    2. import QtQuick 2.0
    3. Rectangle { // 2
    4. id: root // 3
    5. width: 300 // 4
    6. height: 200
    7. Text {
    8. id: helloText
    9. x: root.width / 4 // 5
    10. y: root.height / 4
    11. text: "Hello Wolrd"
    12. color: "red"
    13. }
    14. }

    现在运行demo.py,就会出现窗口了。

    运行结果:

    代码解释:

    1. 在编写QML代码前,我们需要导入相应模块,后面还要带上该模块的版本。不同版本的模块,它所提供的功能可能有所不同,读者可以先不用管这个版本号,跟本教程中写一样的就可以。在QML文档中,我们可以使用/* */进行单行或多行注释,//仅用于单行注释。

    2. Rectangle是QML中的矩形元素,用来绘制矩形,当Rectangle作为QML文档的根元素时,它就表示窗口了(窗口也是矩形嘛)。Text是文本元素,用来添加文本。QML还包括其他很多元素,我们会在之后的章节中逐渐涉及到。

    3. id属性就是当前元素的唯一标识符,设置了之后,元素之间就可以通过id属性相互访问。id名称不能重复,必须唯一,命名方法跟变量命名方法一样。如果是根元素,建议直接命名为root,这样既快速又明确。

    4. Rectangle元素有宽度width和高度height属性,由于是根元素,所以窗口的宽和高就由这两个属性决定了。我们可以加一个Rectangle子元素,这样就会在窗口上添加一个矩形,代码和运行结果如下所示。

    1. import QtQuick 2.0
    2. Rectangle {
    3. id: root
    4. width: 300
    5. height: 200
    6. Rectangle {
    7. id: childRect
    8. width: 80
    9. height: 60
    10. color: "blue"
    11. }
    12. }

    5. 可以发现,当设置文本元素在窗口上的x和y坐标时,我们通过root访问了父元素Rectangle的宽度和高度属性。既然是访问父元素,我们也可以使用关键字parent来访问,如下方代码所示。

    1. x: parent.width / 4
    2. y: parent.height / 4

    本章小结

    1. QML代码的写法很简洁,元素后面加一对花括号{},括号当中写上元素的属性,属性和值用冒号分开。

    2. 用//添加单行注释,用/**/添加单行或多行注释。

    3. 我们可以通过id属性访问其他元素,如果要访问父元素,用关键字parent就可以了。

    4. 有什么不懂的地方可以先放一下,完全没关系,往后继续看下去就会慢慢懂了。:)

  • 相关阅读:
    微软 x OpenAI 祭出杀招!GPT-4 全面进入 Windows 11
    Python绘图系统16:动态更新tkinter组件
    Stream手动分页
    笔记 | MySQL 运维常用语句
    【图论C++】链式前向星(图(树)的存储)
    Byzantine Generals Problem
    css 渐变下划线实现 移入移出 动画
    【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
    点云端面转换为2D平面图
    C++入门(二)
  • 原文地址:https://blog.csdn.net/La_vie_est_belle/article/details/125590456