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

Qt xml学习之calculator-qml

1.功能说明:制作简易计算器
2.使用技术:qml,scxml
3.项目效果:
在这里插入图片描述

4.qml部分:

import Calculator 1.0  //需要引用对应类的队友版本
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 1.4
import QtScxml 5.8  // 引入QScxmlStateMachineWindow {visible: truewidth: 640height: 480title: qsTr("Hello World")Calculator{id:calculatorrunning: trueEventConnection{events: ["Display"] //触发事件名,可自定义onOccurred: name.text = event.data.display_res //event是当前触发事件}}Column{spacing:10//结果区Item {id: resultZonewidth: 640height: 30Rectangle{color: "#00ff55"anchors.fill: parentText {id: nametext: qsTr("text")color: "#000000"font.bold:truefont.pixelSize:24}}}//数字区Item{width: 640height: 320Grid{columns:3Repeater{model: ["1","2","3","4","5","6","7","8","9"]Button{text:modelDataheight:100onClicked: calculator.submitEvent(eventname)//submitEvent ,QScxmlStateMachine 方法property string eventname: {return "DIGIT." + text}}}}}//操作区Item{id:operwidth: 640height: 50Row{Repeater{model:["+", "-", "*", "/"]Button{text:modelData;width:120height:40onClicked: calculator.submitEvent(eventname);property string eventname: {switch(text){case "+" :return "OPER.PLUS"case "-" :return "OPER.MINUS"case "*" :return "OPER.STAR"case "/" :return "OPER.DIV"}}}}}}//计算‘=’Button{text:"="onClicked: calculator.submitEvent("EQUALS")}}}

5.scxml部分
帮助文档:https://www.w3.org/TR/scxml/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
_event指的是当前事件,查阅帮助文档可知
在这里插入图片描述
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" binding="early" xmlns:qt="http://www.qt.io/2015/02/scxml-ext" name="Calculator" qt:editorversion="4.12.2" datamodel="ecmascript" initial="work"><qt:editorinfo initialGeometry="48.45;-3.09;-20;-20;40;40"/><state id="work"><qt:editorinfo scenegeometry="327.40;189.57;-30.23;54;456.33;372.10" removedInitial="Parallel_1" geometry="327.40;189.57;-357.63;-135.57;456.33;372.10"/><transition type="internal" event="UPDATE_DISPLAY"><send event="Display"><param name="display_res" expr="short_res==''?res:short_res"/></send><log label="'log'" expr="res"/></transition><state id="Ready"><qt:editorinfo scenegeometry="172.79;135.84;112.79;85.84;146.57;100" geometry="-106.05;-23.24;-60;-50;146.57;100"/><onentry><assign location="res" expr="0"/><send event="UPDATE_DISPLAY"/><log label="'in ready'" expr="0"/><assign location="short_res" expr="''"/></onentry><transition type="internal" event="DIGIT" target="init_input"><qt:editorinfo movePoint="-30.71;1.54"/><assign location="short_res" expr="''"/></transition></state><state id="init_input"><qt:editorinfo scenegeometry="209.21;274.28;93.21;224.28;176;146" geometry="-69.63;115.20;-116;-50;176;146"/><onentry><assign location="short_res" expr="short_res+_event.name.substr(_event.name.lastIndexOf('.')+1)"/><send event="UPDATE_DISPLAY"/></onentry><transition type="internal" event="DIGIT"><assign expr="short_res+_event.name.substr(_event.name.lastIndexOf('.')+1)" location="short_res"/><send event="UPDATE_DISPLAY"/></transition><transition type="internal" event="OPER"><if cond="'PLUS'==_event.name.substr(_event.name.lastIndexOf('.')+1)"><assign location="short_res" expr="short_res+'+'"/><elseif cond="'MINUS'==_event.name.substr(_event.name.lastIndexOf('.')+1)"/><assign expr="short_res+'-'" location="short_res"/><elseif cond="'STAR'==_event.name.substr(_event.name.lastIndexOf('.')+1)"/><assign location="short_res" expr="short_res+'*'"/><elseif cond="'DIV'==_event.name.substr(_event.name.lastIndexOf('.')+1)"/><assign location="short_res" expr="short_res+'/'"/></if><send event="UPDATE_DISPLAY"/></transition><transition type="internal" event="EQUALS"><assign expr="eval(short_res)" location="short_res"/><send event="UPDATE_DISPLAY"/></transition></state></state><datamodel><data id="res"/><data id="short_res"/></datamodel>
</scxml>

相关文章:

Qt xml学习之calculator-qml

1.功能说明&#xff1a;制作简易计算器 2.使用技术&#xff1a;qml,scxml 3.项目效果&#xff1a; 4.qml部分&#xff1a; import Calculator 1.0 //需要引用对应类的队友版本 import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 1.4 import QtScxml…...

低代码开发系统是什么?它有那些部分组成?

低代码开发系统是什么&#xff1f;它有那些部分组成&#xff1f; 一、引言 在当今快速变化的商业环境中&#xff0c;企业对于快速响应市场需求、降低开发成本和提高开发效率的需求日益增强。低代码开发系统&#xff08;Low-Code Development Platform&#xff09;应运而生&am…...

2024年西安交通大学程序设计竞赛校赛

2024年西安交通大学程序设计竞赛校赛 文章目录 2024年西安交通大学程序设计竞赛校赛D瑟莉姆的宴会E: 雪中楼I: 命令行(待补)J&#xff1a;最后一块石头的重量(待补)K: 崩坏&#xff1a;星穹铁道(待补)M&#xff1a;生命游戏N: 圣诞树 D瑟莉姆的宴会 解题思路&#xff1a; ​ …...

【学习Day5】操作系统

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; 学习编辑文章的时间不太够用&#xff0c;先放思维导图&#xff0c;后续复习完善细节。...

学习小记录——python函数的定义和调用

今日小好运&#xff0c;未来有好运。&#x1f381;&#x1f496;&#x1fad4; 分享个人学习的小小心意&#xff0c;一起来看看吧 函数的定义 函数通常来说就是带名字的代码块&#xff0c;用于完成具体的工作&#xff0c;需要使用的时候调用即可&#xff0c;这不仅提高代码的…...

RHEL7.9修改分区

系统RHEL7.9 他因为安装软件&#xff0c;需要修改分区 进入超级用户root&#xff0c;输入lsblk 查看分区&#xff0c;可见465.8G系统盘sda下有三个物理卷&#xff0c;其中sda3下/home有410.6G&#xff0c;需要这部分拆分出200G软件和100G的数据库分区 备份/home 目录下文件 c…...

【Linux】命名管道

一、命名管道的原理 在前面的博客中&#xff0c;我们学习了匿名管道&#xff0c;了解到了两个具有血缘关系的进程之间是如何进行通信的&#xff1f;那么在没有血缘关系&#xff08;毫不相关&#xff09;的进程之间是如何进行通信的&#xff1f; 大致思路是一样的&#xff0c;我…...

IMX6Q基于linux4.1.15调试音频芯片tas2505

IMX6Q基于linux4.1.15调试音频芯片tas2505 1、开发环境2、初步想法3、开发过程4、tas2505重要的寄存器5、遇到的问题1、开发环境 芯片:IMX6Q (NXP系列) 内核版本:linux4.1.15 Ubuntu版本:16.04 目标模块:tas2505 2、初步想法 由于该电路是由外部晶振提供的时钟频率24.5…...

卷积常用网络

目录 1.AlexNet2.VGG3.GoogleNet4.ResNet5.MobileNet 1.AlexNet AlexNet是2012年ISLVRC 2012&#xff08;ImageNet Large Scale Visual Recognition Challenge&#xff09;竞赛的冠军网络。 首次利用 GPU 进行网络加速训练。使用了 ReLU 激活函数&#xff0c;而不是传统的 Si…...

Firebase Local Emulator Suite详解

文章目录 Firebase Local Emulator Suite 组件安装和使用步骤1. 安装 Firebase CLI2. 初始化 Firebase 项目3. 配置模拟器4. 启动模拟器5. 配置应用程序使用本地模拟器 常见用途 Firebase Local Emulator Suite 是一组本地服务&#xff0c;可以模拟 Firebase 平台的在线服务&am…...

计算机组成原理·存储系统疑点归纳

组原这门课有点学得不是很懂&#xff0c;现在快考试了&#xff0c;挑几个做错了的题分析、记录一下。 N o . 1 \mathit{No}.1 No.1  x x x、 y y y 为定点整数&#xff0c;其格式为 1 1 1 位符号位、 n n n 位数值位&#xff0c;若采用补码一位乘法实现乘法运算&#xff0c;则…...

在 GPU 上实现全规模文件系统加速

摘要 现代高性能计算和人工智能计算解决方案经常使用 GPU 作为其主要计算能力来源。这就为 GPU 应用程序的存储操作造成了严重的不平衡&#xff0c;因为每一个此类存储操作都必须向 CPU 发出信号并由 CPU 处理。在 GPU4FS 中&#xff0c;我们针对这种不平衡提出了一个彻底的解决…...

代码随想录算法训练营Day7|454.四数相加II、 383. 赎金信、15. 三数之和、 18. 四数之和

454.四数相加II 四个数组分成两组进行for循环&#xff0c;先用HashMap存储所有第一组for循环出现的和的次数。再进行第二组for循环&#xff0c;每一次得出的和判断其负数是否在map的key中&#xff0c;如果存在&#xff0c;就加上这个value。 class Solution {public int four…...

编译器屏障概述

文章目录 1. 前言2. 编译器内存屏障2.1 编译器内存访问重排序规则2.2 编译器屏障的几种形式2.2.1 显式编译器屏障2.2.2 隐式编译器屏障2.2.3 硬件内存屏障充当编译屏障2.2.4 编程语言内存模型提供的编译屏障 2.3 编译器内存屏障实例2.3.1 Linux spinlock 3. 结语4. 参考资料 1.…...

RUST宏编程入门

宏指示符 在Rust的宏编程中&#xff0c;宏可以接受多种类型的参数&#xff0c;称为“指示符”。这些指示符帮助宏识别不同类型的代码片段&#xff0c;并相应地处理它们。 这里列出全部指示符&#xff1a; blockexpr 用于表达式ident 用于变量名或函数名itemliteral 用于字面常…...

linux安装srs

获取srs cd /opt git clone -b 4.0release https://gitee.com/ossrs/srs.git cd srs/trunk 启动srs ./objs/srs -c conf/srs.conf ./etc/init.d/srs status 访问http://192.168.220.146:8080/出现下方图片说明安装成功 点击进入SRS控制台看到下方图片...

IO流(2)

缓冲流 字节缓冲流 利用字节缓冲区拷贝文件&#xff0c;一次读取一个字节&#xff1a; public class test {public static void main(String [] args) throws IOException {//利用字节缓冲区来拷贝文件BufferedInputStream bisnew BufferedInputStream(new FileInputStream(&…...

【docker】docker启动bitnami/mysql

说明&#xff1a;-v 宿主机目录:docker容器目录&#xff0c;-p 同理 注意&#xff1a;/opt/bitnami/mysql/conf/bitnami 目录自定义conf的目录&#xff0c;不能使用原有的/opt/bitnami/mysql/conf 目录。 容器启动后可在宿主机的/宿主/mysql8.0/conf&#xff0c;添加my_custom.…...

边缘计算、云计算、雾计算在物联网中的作用

边缘计算和雾计算不像云那样广为人知&#xff0c;但可以为企业和物联网公司提供很多帮助。这些网络解决了物联网云计算服务无法解决的许多问题&#xff0c;并使分散的数据存储适应特定的需求。让我们分别研究一下边缘计算、雾计算和云计算的优势。 雾计算的好处 低延迟。雾网络…...

【c语言】探索内存函数

探索内存函数 memcpy函数memmove函数memset函数memcmp函数&#xff1a; memcpy函数 memcpy函数声明&#xff1a; void * memcpy ( void * destination, const void * source, size_t num );将source空间下的num个字符复制到dest中去 函数的使用&#xff1a; 将字符数组a的5字…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...