当前位置: 首页 > 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.jsqmd.com/news/8361/

相关文章:

  • 硬件-电容学习DAY23——电容设计实战指南:从选型到高频应用 - 教程
  • NOIP之前的复健记录
  • Linux 命令行安装达梦数据库
  • Google开源Tunix:JAX生态的LLM微调方案来了
  • 实用指南:如何优化 C# MVC 应用程序的性能
  • Eclipse 中文语言包安装教程:一键将界面切换为中文 - 教程
  • 『OI 回忆录』停课有感
  • 『回忆录』初三第三学月
  • 完整教程:MySQL 5.7 主主复制 + Keepalived 高可用配置实例
  • 题解:P14074 [GESP202509 五级] 有趣的数字和
  • 完整教程:数据结构从入门到实战————栈
  • 解码Huffman 编码与 Huffman 树
  • 『回忆录』初三来高中的半学期
  • 10.1 容器云部署准备(一) - 实践
  • 关于缓冲区以及输出方式
  • 详细介绍:2025三掌柜赠书活动第三十五期 AI辅助React Web应用开发实践:基于React 19和GitHub Copilot
  • coduck模拟赛一 补题报告 - 指南
  • RippleNet: Propagating User Preferences on the Knowledge Graph for Recommender Systems
  • HDF5文件 ——之三
  • MySQL库的操作(ubuntu) - 教程
  • 代码随想录算法训练营|Day 25
  • 深入解析:SAE J3072-2024插电式电动汽车(PEV)中的车载逆变器系统安全标准介绍
  • 冷僻模板整理
  • 深入解析:精读C++20设计模式——行为型设计模式:命令模式
  • C# 与 C/C++ 互操作
  • 实用指南:gitlab-runner 再次实践中理解和学习
  • 2025年7月28日当周关键漏洞汇总分析
  • 完整教程:Ref 和 Reactive 响应式原理剖析与代码实现
  • 【自然语言处理】文本规范化知识点梳理与习题总结 - 教程
  • Rocky Linux 8 远程管理配置指南(宿主机 VNC + KVM 虚拟机 VNC) - 指南