当前位置: 首页 > news >正文

06. 定时器

一、定时器

  QML 有一个 Timer元素,它允许你在 QML 中设置定时器。这个元素是 Qt Quick 模块的一部分。我们可以通过定时器的 interval 属性设置 定时间隔,通过 running 属性设置 定时器默认是否运行,通过 repeat 属性设置 定时器是否可以重复触发。在设置完相关属性后,我们还可以通过 start() 开发 启动定时器,通过 stop() 方法 停止定时器

  我们可以在终端中使用 pip 安装 PySide6 模块。默认是从国外的主站上下载,因此,我们可能会遇到网络不好的情况导致下载失败。我们可以在 pip 指令后通过 -i 指定国内镜像源下载

pip install pyside6 -i https://mirrors.aliyun.com/pypi/simple

  国内常用的 pip 下载源列表:

  • 阿里云 https://mirrors.aliyun.com/pypi/simple
  • 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple
  • 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple
  • 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple

  我们新建一个 template.py 文件。

import sysfrom PySide6.QtWidgets import QApplication
from PySide6.QtQml import QQmlApplicationEngineif __name__ == "__main__":app = QApplication(sys.argv)                                                # 1.创建一个QApplication类的实例engine = QQmlApplicationEngine()                                            # 2.创建QML引擎对象engine.load("template.qml")                                                 # 3.加载QML文件sys.exit(app.exec())                                                        # 4.进入程序的主循环并通过exit()函数确保主循环安全结束

  我们新建一个 template.qml 文件。

import QtQuick.Window
import QtQuick.Controls// Window控件表示一个顶级窗口
// 在QML中,元素是通过大括号{}内的属性来配置的。
Window {id: windowIdwidth: 800                                                                  // 窗口的宽度height: 600                                                                 // 窗口的高度visible: true                                                               // 显示窗口color: "lightgray"property int count: 0                                                       // 定义一个属性,用于计数// 在矩形内部定义一个文本(Text)元素。这意味着文本将作为矩形的一个子元素,通常会被绘制在矩形内部。Text {anchors.centerIn: parent                                                // 将中心的锚点位到父元素的中心font.pointSize: 32                                                      // 设置文本的字体大小text: "Value:" + windowId.count                                        // 设置文本元素的内容}// 定义一个按钮Button{id: startButtonId                                                       // 定义一个标识width: 200                                                              // 按钮的宽度height: 50                                                              // 按钮的高度// 使用锚点(anchors)系统来定位文本元素anchors.left: parent.left                                               // 将左边的锚点定位到父元素的左边anchors.leftMargin: 20                                                  // 设置左侧边距为20像素anchors.bottom: parent.bottom                                           // 将底部的锚点定位到父元素的底部anchors.bottomMargin: 20                                                // 设置底部边距为20像素text: "开始加载"                                                         // 按钮的文本// 按键点击时触发onClicked: {if (startButtonId.text == "开始加载") {windowId.count = 0                                              // 重置计数 timerId.start()                                                 // 开启定时器startButtonId.text = "暂停加载"} else if (startButtonId.text == "暂停加载") {timerId.stop()startButtonId.text = "继续加载"} else if (startButtonId.text == "继续加载") {timerId.start()startButtonId.text = "暂停加载"}}}Button{width: 200                                                              // 按钮的宽度height: 50                                                              // 按钮的高度anchors.right: parent.right                                             // 将右边的锚点定位到父元素的右边anchors.rightMargin: 20                                                 // 设置右侧边距为20像素anchors.bottom: parent.bottom                                           // 将底部的锚点定位到父元素的底部anchors.bottomMargin: 20                                                // 设置底部边距为20像素text: "重置"                                                            // 按钮的文本// 按键点击时触发onClicked: {windowId.count = 0                                                  // 重置计数}}// 定义一个定时器Timer{id: timerId                                                             // 定时器idinterval: 100                                                           // 定义定时器间隔running: false                                                          // 定时器默认不运行repeat: true                                                            // 定时器是否可以重复触发// 当定时器触发时执行onTriggered: {windowId.count = windowId.count + 1                                 // 计算新的计数值if (windowId.count >= 100) {timerId.stop()                                                  // 如果进度值超过最大值,停止定时器startButtonId.text = "开始加载"                                  // 重置开始按钮的文本}}}
}
http://www.gsyq.cn/news/15849.html

相关文章:

  • NOIP之前的复健记录
  • 解码Huffman 编码与 Huffman 树
  • 深入解析:SAE J3072-2024插电式电动汽车(PEV)中的车载逆变器系统安全标准介绍
  • 实用指南:gitlab-runner 再次实践中理解和学习
  • 【自然语言处理】文本规范化知识点梳理与习题总结 - 教程
  • Rocky Linux 8 远程管理配置指南(宿主机 VNC + KVM 虚拟机 VNC) - 指南
  • 邮票收集问题正推证明
  • 2025 年 9 月习题集
  • 实用指南:Linux整个系统权限玩坏了怎么办
  • C# 代码规范
  • MySql的存储过程以及JDBC实战 - 详解
  • [MCP] 监听资源更新
  • 【C++哲学】面向对象的三大特性之 多态 - 实践
  • 2025CSP-S模拟赛58 比赛总结
  • 单一训练模式适应多个机器人本体 —— skiled brain —— 机器人酷刑现场,竟是为了锻造全能大脑,网友:求AGI饶了我
  • 2025/10/4 总结
  • HPE SPP 2025.09.00.00 - HPE 服务器固件、驱动程序和系统软件包
  • sql注入和xss漏洞
  • Python 2025:异步革命与AI驱动下的开发新范式 - 详解
  • 完整教程:精读C++20设计模式——行为型设计模式:解释器模式
  • 10.4模拟赛总结
  • 微服务项目->在线oj系统(Java-Spring)--竞赛管理 - 教程
  • vite-vue3脚手架(参考帝莎编程-后台管理系统开发)
  • mssql 无锁读取
  • 2025年四川大学计算机学院专硕考研经验分享
  • 详细介绍:CS50ai: week2 Uncertainty我的笔记B版——当 AI 开始“承认不确定”
  • VMware虚拟机设置中处理器数量和内核内存再次探讨
  • VMware中Ubuntu迁移(复制)后进入紧急模式You are in emergency mode.
  • 2025年全国大学生电子设计竞赛A题:能量回馈的变流器负载试验装置(国一方案分享+代码工程+仿真) - 详解
  • Embarcadero Dev-C++ 6.3 中文乱码问题 - 教程