qml界面参数传递、返回

2023-10-27

背景

:设计设置界面时需要在键盘上设置数值,设定完返回时需要知道返回值是什么。如果用上下级关系实现可能很方便,但是会重复加载按键模块,觉得这样不好。想用stackView.push(url,{初始值,设定后的值})这样的方式。
1 想过用带参数信号的方式传递,因为两个模块是平级的关系,上级菜单不识别参数名,报错。
2 在网上参考资料使用另外一种
https://blog.csdn.net/happyrabbit456/article/details/56670809?

(以StackView管理页面为例)
(1)page1.qml跳转到page2.qml传值
page1.qml

Rectangle
{
id:rect1

MouseArea {
id: maStartQuery
anchors.fill: parent
onClicked:
{
if(!stackView.busy)
stackView.push(Qt.resolvedUrl(“qrc:///qml/Numberkey.qml”),
{number:“100”})//给page2.qml的number为键盘显示的初始值,还想要得到按键后的值,
}
}

}

Numberkey.qml定义如下

Rectangle
{
id:rect2

property int number:""//要传的值

}
(2)Numberkey.qml点击"确定"按钮时将结果返回给page1.qml

A.在page1.qml中增加一个函数clickedfunc,当点击page2.qml中"确定"按钮时调用;
B.在Numberkey.qml中增加一个属性containerqml,用来记录page1.qml;
C.在从page1.qml跳转到Numberkey.qml时,将rect1传给Numberkey.qml的containerqml属性。

page1.qml
Rectangle
{
id:rect1

label{
text:100
}
MouseArea {
id: maStartQuery
anchors.fill: parent
onClicked:
{
if(!stackView.busy)
stackView.push(Qt.resolvedUrl(“qrc:///qml/Numberkey.qml”),
{number:100,containerqml:rect1})
}
}

//当点击Numberkey.qml中"确定"按钮时调用,此函数在page1中定义

function clickedfunc(temp)
{
label.text= temp
 stackView.pop();//返回到本页
}

}

page2.qml
Rectangle
{
id:rect2

property variant containerqml: null
property string name:""//要传的值

MouseArea {
id: btnOK
anchors.fill: parent
onClicked:
{
containerqml.clickedfunc(200);//调用page1.qml中的函数,实现了传返回值。
}
}
}

追加方法

还有一种


```cpp
Page {
    width: 800
    height: 480
    id:settingpage
   title: qsTr("设置")
   Rectangle {
       color: "#333"
       anchors.fill: parent
   }
   header:  Rectangle {
       width:  parent.width
       height: 40
      Button{
      text:"<-"
      onClicked:   mainStack.pop()
      }
   }

   property int value
   Component{
       id:number_input
       NumberKey{
           id:input
           title: "预置张数"
           Component.onCompleted: input.number=value
           Component.onDestruction: {
               value=input.number
               console.log("Destruction Beginning!")
              }
        }
   }

注意上面的Component.onCompleted:在模块建立的时候执行一次。
Component.onDestruction:在模块销毁的时候执行一次,本例子中在pop后执行

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qml界面参数传递、返回 的相关文章

随机推荐

  • 地理信息安全在线培训考试系统题库-单选题

    根据 测绘成果管理条例 利用涉及国家秘密测绘成果开发生产的产品 未经 A 进行保密技术处理的 其秘密等级不得低于所用测绘成果的秘密等级 A 国务院测绘行政主管部门或者省 自治区 直辖市人民政府测绘行政主管部门 B 省级以上保密管理部门 C
  • 超市运营情况分析

    超市运营情况分析 本文选取的数据源涵盖了2017年至今的客户 订单 地点和产品数据 本文主要聚焦出现负利润的省 自治区的运营情况 对其出现负利润的原因加以探讨 并分析预测这些省 自治区未来的利润情况 对超市的运营管理决策提供有效的数据支持
  • Shell数组:shell数组的定义、数组长度

    Shell在编程方面比Windows批处理强大很多 无论是在循环 运算 bash支持一维数组 不支持多维数组 并且没有限定数组的大小 类似与C语言 数组元素的下标由0开始编号 获取数组中的元素要利用下标 下标可以是整数或算术表达式 其值应大
  • qt超易实现录屏程序的方法

    QT录屏程序的实现 1 获取桌面的图像 The QApplication desktop function is used to get an instance of QDesktopWidget QApplication desktop
  • Git删除本地在远端已经删除的分支

    git remote prune origin
  • python gzipped source tarball,下载及安装Python详细步骤

    安装python分三个步骤 下载python 安装python 检查是否安装成功 1 下载Python 2 选择下载的版本 3 点开Download后 找到下载文件 Gzipped source tarball 是Linux系统下载的版本
  • python3.7成功换虚拟环境python3.6

    目录 1 打开CMD 查看自己有多少虚拟环境 2 打开anaconda prompt 终端 创建 3 6环境 3 在pycharm中从3 7正确换配置为3 6环境 1 打开CMD 查看自己有多少虚拟环境 C Users Administra
  • shell 中的单行注释和多行注释

    今天在学习shell编程的时候 当自己想对多行进行注释时 发现自己不会 所以在网上去查询下 参考 作者 lansesl2008 地址 http blog csdn net lansesl2008 article details 205583
  • 疯传全网网络10个运维巡检脚本以及使用小技巧

    哈喽大家好 欢迎来到虚拟化时代君 XNHCYL 大家好 我是虚拟化时代君 一位潜心于互联网的技术宅男 这里每天为你分享各种你感兴趣的技术 教程 软件 资源 福利 每天更新不间断 福利不见不散 第1章 前言 巡检脚本在网络运维中非常重要 近期
  • Jenkins远程命令执行漏洞(CVE-2018-1000861)

    声明 好好学习 天天向上 漏洞描述 Jenkins使用Stapler框架开发 其允许用户通过URL PATH来调用一次public方法 由于这个过程没有做限制 攻击者可以构造一些特殊的PATH来执行一些敏感的Java方法 通过这个漏洞 我们
  • C单元测试框架——CMockery (1) 简介

    cmockery 是google发布的用于C单元测试的一个轻量级的框架 主要特点 免费且开源 google提供技术支持 轻量级的框架 使测试更加快速简单 避免使用复杂的编译器特性 对老版本的编译器来讲 兼容性好 并不强制要求待测代码必须依赖
  • 【设计模式】-设计模式总目录

    设计模式 重要性不多说了 之前在简书上简单总结过 这次再来总结一次 更详细版 以此加深印象和帮助理解 01 单例模式 https blog csdn net lovexiaotaozi article details 83896573 02
  • Java并发编程——ReentrantLock重入锁解析

    重入锁 所谓重入锁 即支持重入性 表示能够对共享资源重复加锁 即当前线程获取该锁再次获取不会被阻塞 重入性 在线程获取锁的时候 如果已经获取锁的线程是当前线程的话则直接再次获取成功 由于锁会被获取n次 那么只有锁在被释放同样的n次之后 该锁
  • 二叉树的层序遍历,以及求层数

    二叉树的中序遍历 最主要的一种方法是用队列 Queue 来实现 下面贴出一份实现代码 class Tree int data Tree lchild 左孩子 Tree rchild 右孩子 以下是主要方法 public static voi
  • 自己实现telnet程序

    转自 http blog csdn net gujintong1110 article details 44278535 include
  • Metasploitable渗透测试实战:ms17-010

    漏洞简介 永恒之蓝 即ms17 010 是指2017年4月14日晚 黑客团体Shadow Brokers 影子经纪人 公布一大批网络攻击工具 其中包含 永恒之蓝 工具 永恒之蓝 利用Windows系统的SMB漏洞可以获取系统最高权限 5月1
  • 论文解读:Improving Nighttime Driving-Scene Segmentation via Dual Image-adaptive Learnable Filters

    论文地址 https arxiv org abs 2207 01331 发表时间 Submitted on 4 Jul 2022 v1 last revised 20 Mar 2023 this version v2 项目地址 https
  • C语言穷举解决最大子序列含测试

    题目再现 设给定一个整数序列 a 1 a 2
  • Python语言:列表初体验

    列表是Python中的一个对象 他类似于C语言中的数组 可以存储许多数据 也可以称之为数据集合 他原则是可以存储不同类型的数据 一般不建议这样使用 有点奇怪 一般情况下一个列表中保存的都是同一种类型的数据 列表的创建 列表 list 是把数
  • qml界面参数传递、返回

    背景 设计设置界面时需要在键盘上设置数值 设定完返回时需要知道返回值是什么 如果用上下级关系实现可能很方便 但是会重复加载按键模块 觉得这样不好 想用stackView push url 初始值 设定后的值 这样的方式 1 想过用带参数信号