Qt Quick - Container

news2024/11/24 13:47:07

Qt Quick - Container使用总结

  • 一、概述
  • 二、使用容器
  • 三、管理当前索引
  • 四、容器实现

一、概述

Container 提供容器通用功能的抽象基类。Container是类容器用户界面控件的基本类型,允许动态插入和删除Item。DialogButtonBox, MenuBar, SwipeView, 和 TabBar 都是继承至这个控件。

二、使用容器

通常情况下,Item被静态声明为Container的子Item,但也可以动态地添加、插入、移动和删除Item。可以使用itemAt()或contentChildren访问容器中的Item。

大多数容器都有“当前”项的概念。当前项是通过currentIndex属性指定的,可以通过只读的currentItem属性访问。
下面的例子演示了如何将Item动态插入TabBar,这是Container的具体实现之一。

 Row {
      TabBar {
          id: tabBar

          currentIndex: 0
          width: parent.width - addButton.width

          TabButton { text: "TabButton" }
      }

      Component {
          id: tabButton
          TabButton { text: "TabButton" }
      }

      Button {
          id: addButton
          text: "+"
          flat: true
          onClicked: {
              tabBar.addItem(tabButton.createObject(tabBar))
              console.log("added:", tabBar.itemAt(tabBar.count - 1))
          }
      }
  }

在这里插入图片描述

三、管理当前索引

当使用多个容器时,例如TabBar和SwipeView,它们的currentIndex属性可以相互绑定以保持它们同步。当用户与任何容器交互时,其当前索引的更改自动传播到另一个容器。
但是请注意,在JavaScript中为currentIndex赋值会删除相应的绑定。为了保留绑定,使用以下方法更改当前索引:

  • incrementCurrentIndex ()
  • decrementCurrentIndex ()
  • setCurrentIndex ()
  TabBar {
      id: tabBar
      currentIndex: swipeView.currentIndex
  }

  SwipeView {
      id: swipeView
      currentIndex: tabBar.currentIndex
  }

  Button {
      text: qsTr("Home")
      onClicked: swipeView.setCurrentIndex(0)
      enabled: swipeView.currentIndex != 0
  }

  Button {
      text: qsTr("Previous")
      onClicked: swipeView.decrementCurrentIndex()
      enabled: swipeView.currentIndex > 0
  }

  Button {
      text: qsTr("Next")
      onClicked: swipeView.incrementCurrentIndex()
      enabled: swipeView.currentIndex < swipeView.count - 1
  }

四、容器实现

Container不提供任何默认的可视化。它用于实现SwipeView和TabBar等容器。在实现自定义容器时,API中最重要的部分是contentModel,它提供了包含的项目,可以用作项目视图和重复器的委托模型。

  Container {
      id: container

      contentItem: ListView {
          model: container.contentModel
          snapMode: ListView.SnapOneItem
          orientation: ListView.Horizontal
      }

      Text {
          text: "Page 1"
          width: container.width
          height: container.height
      }

      Text {
          text: "Page 2"
          width: container.width
          height: container.height
      }
  }

请注意,page 项的大小是如何手动设置的。这是因为这个例子使用了一个普通的容器,它没有对视觉布局做任何假设。在具体的容器实现中,通常没有必要指定Item的大小,例如SwipeView和TabBar。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/448237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试工程师为什么要关注研发效能?

研发效能中的“研发”&#xff0c;指的是广义的研发团队&#xff0c;包含开发、测试、和研发团队内部的产品经理&#xff08;不包含业务部门的产品经理&#xff09;。测试工程师身处其中&#xff0c;作为研发团队的一员&#xff0c;对于整体的效能如何提升也应该了然于胸。这篇…

【论文写作】如何写科技论文?万能模板!!!(以IEEE会议论文为例)

0. 写在前面 常言道&#xff0c;科技论文犹如“八股文”&#xff0c;有固定的写作模式。本篇博客主要是针对工程方面的论文的结构以及写作链条的一些整理&#xff0c;并不是为了提高或者润色一篇论文的表达。基本上所有的论文&#xff0c;都需要先构思好一些点子&#xff0c;有…

「计算机控制系统」5. 模拟设计法

模拟控制器的离散化 数字PID控制器 Smith预估控制 文章目录 模拟控制器的离散化数值积分法一阶后向差分法一阶前向差分法双线性变换法&#xff08;Tustin&#xff09; 零极点匹配法其他方法 数字PID控制器模拟PID控制器的离散化数字PID的改进PID控制各环节的作用PID参数的整定扩…

win11删除的文件不在回收站原因及找回文件方法

win11是微软最新推出的操作系统&#xff0c;它的外观和功能都有所升级。但是&#xff0c;在使用win11的过程中&#xff0c;有时候你会误删一些重要的文件&#xff0c;而这些文件并没有进入回收站&#xff0c;这该怎么办呢&#xff1f;win11删除的文件不在回收站怎么找回&#x…

[强化学习]学习路线和关键词拾零

强化学习学习方法和路线 学习路线 先从基础教材开始&#xff0c;构建RL的知识框架&#xff0c;熟悉关键名词和公式推导&#xff0c;扩展到Model-Free的Value-Based和Policy-Based方法&#xff0c;同时参考github的代码练习。接下来精读几篇经典论文&#xff0c;如DQN,PPO等。…

Node内置模块 【压缩zlib模块】

文章目录 &#x1f31f;前言&#x1f31f;zlib模块&#x1f31f;关于gzip与deflate&#x1f31f;使用zlib&#x1f31f;压缩与解压缩&#x1f31f;案例&#xff1a;压缩&#x1f31f;案例&#xff1a;解压缩 &#x1f31f;服务端gzip压缩&#x1f31f;HTTP配置&#x1f31f;HTT…

Android Binder图文详解和驱动源码分析

文章目录 前言一、跨进程通讯的过程1. AIDL客户端代码2. AIDL服务端代码3. 通信过程a. 发送请求时序图b. 接收请求时序图 二、Binder一次拷贝1. 发送给Binder驱动的数据2. 一次拷贝示意图 三、Binder驱动源码1. 相关数据结构2. 阅读Binder驱动源码 参考 前言 最近在学习Binder…

Jupyter Notebook的安装与使用

Jupyter Notebook Jupyter Notebook介绍Jupyter Notebook使用安装启动创建文件编写代码和文本常用命令配置文件 Anaconda Jupyter Notebook介绍 Jupyter Notebook是一个基于Web的交互式计算环境&#xff0c;可以让用户以文档形式记录代码、数据分析结果和说明文本&#xff0c;并…

认识ThinkPHP框架

认识ThinkPHP框架 前言一、MVC框架体系二、 ThinkPHP框架文件夹结构三. ThinkPHP下载和基本配置四. ThinkPHP其他东西 前言 ThinkPHP框架是一款非常优秀的PHP框架&#xff0c;是完全由中国人发明的框架 一、MVC框架体系 ThinkPHP框架由MVC框架体系构成&#xff0c;MVC的解释如下…

ubuntu下安装配置grpc

目录 1.准备环境 2.安装protobuf 3.安装cares库 3.安装grpc-1.17.x 1.准备环境 sudo apt-get install pkg-config sudo apt-get install autoconf automake libtool make g unzip sudo apt-get install libgflags-dev libgtest-dev sudo apt-get install clang libc-dev 如…

linux中的vim编辑器

Vim是一款强大的文本编辑器&#xff0c;可以在终端中使用。它有很多优点&#xff0c;比如快速、高效、灵活等&#xff0c;但同时也有一些难以掌握的操作。在本篇博客中&#xff0c;我们将详细介绍Vim的各种功能&#xff0c;以及如何使用它来提高的编辑效率。 1.基本模式 Vim具…

Unity之ShaderGraph入门

前言 随着Unity版本的不断升级&#xff0c;URP&#xff08;可编程渲染管线&#xff09;也越来越普及了。不管是从效果还是性能&#xff0c;都是吊打老版的build-in-shader。所以无论如何我们都要开始 拥抱URP&#xff0c;升级Unity的时候到了。 引擎版本 我这里选择了Unity …

01_Linux操作系统

第一章&#xff1a;Linux操作系统 阶段内容说明&#xff1a; Linux命令&#xff1a;软件测试第一个任务&#xff0c;一般都要进行环境搭建&#xff0c;一部分环境搭建内容是在服务器上实现的&#xff0c;跟服务器交互需要使用Linux命令&#xff08;因为服务器没有图形化界面&a…

Atlassian Confluence CVE-2022-26134 RCE漏洞

Atlassian Confluence CVE-2022-26134 RCE漏洞 Atlassian Confluence CVE-2022-26134 RCE漏洞 漏洞简介 远程攻击者在未经身份验证的情况下&#xff0c;可构造OGNL表达式进行注入&#xff0c;实现在Confluence Server或Data Center上执行任意代码. 漏洞影响范围 Confluence …

代码优化- 基本概念

思考一个问题&#xff1a;我们可以再抽象语法树上做编译优化吗&#xff1f; 答案是否定的&#xff0c;如果在抽象语法树上做编译优化的话&#xff0c;程序员所写的可能包含错误的代码&#xff0c;可能就被删除了&#xff0c;比如&#xff0c;对下面的程序做不可达代码删除优化…

Hadoop笔记整理

Hadoop 一. 引言 1.1 什么是大数据 大数据:(Big Data):数据量级很大的应用处理。TB级 &#xff0c;日数据增长GB级 K -- M---- G ---- T ----PB ---- EB ---ZB 1024通过对海量数据进行分析&#xff0c;挖掘&#xff0c;进而发现数据内在的规律&#xff0c;从而为企业或者…

【数据结构】超详细讲解:算术表达式转化为后缀表达式、前缀表达式、表达式树的构建

作者&#xff1a;努力学习的大一在校计算机专业学生&#xff0c;热爱学习和创作。目前在学习和分享&#xff1a;算法、数据结构、Java等相关知识。博主主页&#xff1a; 是瑶瑶子啦所属专栏: 【数据结构】&#xff1a;该专栏专注于数据结构知识&#xff0c;持续更新&#xff0c…

Praat脚本-037 | 批量把标注TextGrid生成韵律文本

目录 引题方案一方案二方案三获取脚本关注版权说明 引题 Praat是一种非常出色、轻便、开源免费的标注工具&#xff0c;它的最主要用途是标注&#xff0c;即对语音信号中的一些特征、信息进行标注&#xff0c;保存为TextGrid文件&#xff0c;这个TextGrid文件实质 上就是一种文…

chatGPT写文章-为什么chatGPT写的文章是原创

用chatGPT写文章会重复吗 ChatGPT在生成文本时会优先从先前的训练数据中学习到的文本中选取片段&#xff0c;并根据先前的内容和上下文来生成新的文本。因此&#xff0c;从理论上来说&#xff0c;在相同的输入条件下&#xff0c;每次使用ChatGPT生成文本都可能会产生不同的输出…

Web前端-Vue2.0框架学习

Web前端-Vue框架学习 1. 前端工程化与Webpack1.1 隔行变色的demo实现1.2 webpack的基本使用1.3 webpac插件1.3.1 webpack-dev-server插件1.3.2 html-webpack-plugin 1.4 webpack中的loader&#xff08;加载器&#xff09;1.4.1 css-loader1.4.2 less-loader1.4.3 url-loader &a…