Qt Quick系列(3)—组件component

news/2024/11/17 5:41:29/

🚀作者:CAccept
🎂专栏:Qt Quick
在这里插入图片描述

文章目录

  • 概念
  • 相关知识点
  • 代码示例
  • 总结

概念

在Qt Quick中,组件(Component)是一种可重用的元素,可以包含其他子组件或属性。它们可以用来创建自定义的用户界面元素,例如按钮、标签、列表等等。组件通常由一个QML文件定义(.qml文件),该文件包含了组件的结构、样式和行为。
组件可以通过id属性来引用。这允许您在QML文件中使用一个组件的实例,而不必在每个地方都重新定义组件。您可以使用Qt Quick中的Component元素来动态地创建和销毁组件实例,这对于创建动态用户界面非常有用。
组件可以继承自其他组件,这意味着它们可以重用其他组件的属性、行为和样式。组件也可以在其他组件内部定义,这种嵌套组件的方式可以帮助您组织和管理代码。总之,组件是Qt Quick中非常重要的概念,它们允许您创建可重用的、动态的和易于维护的用户界面元素。

相关知识点

  • 我们要引用组件如果不是在同级目录下要记得import,而想要引用相对应的component的时候,是根据文件名进行引用,比如我的组件定义在Button.qml文件中那么,我在main.qml中想要使用Button.qml中的组件的话是使用Button{}
  • 我们可以公布哪些属性是可以被外部所更改(只有放在root下的变量可以在“外部”调用)

代码示例

我现在要想创建一个组件名为Button,这个组件包含着一个矩形框并且可以拿来点击(点击矩形框内部就会触发点击信号),并且这个矩形框还有文字,可以通过外部对矩形框的文字进行修改。
步骤:
1、创建文件Button.qml
2、在Button.qml中的Item下创建一个核心元素Rectangle,在里面进行一些属性的设置
3、在root中新建一些属性来和Rectangle的属性进行绑定,事后我们就可以通过外部对root下的属性进行改变就可以变相的对Rectangle的属性进行改变
4、在Rectangle中创建核心元素MouseArea来实现点击信号的捕捉

Button.qml

import QtQuick 2.0Item {id:root//新建一个属性和label的text进行绑定property alias text: label.text//点击区域就会对信号进行发射signal clickedRectangle{id:button1x:12y:12width: 116height: 26color:"lightsteelblue"border.color: "slategrey"Text{id:labelanchors.centerIn: parenttext:"Start"}MouseArea{anchors.fill:parentonClicked:{root.clicked()}}}
}

main.qml

import QtQuick 2.9
import QtQuick.Window 2.0
Window {visible: truewidth: 640height: 480title: qsTr("component")Button{id:button0//可以修改矩形框的文本内容text:"开始"//设置信号响应的函数onClicked:{//改变text1的文本text1.text = "点击了按钮"}}Text{id:text1x:12y:50width: 116height: 26text:"waiting"horizontalAlignment: Text.AlignHCenter}Button{id:button1x:200y:12text:"开始"onClicked:{text2.text = "点击了按钮"}}Text{id:text2x:200y:50width: 116height: 26text:"waiting"horizontalAlignment: Text.AlignHCenter}
}

运行结果:
在这里插入图片描述
在这里插入图片描述

总结

组件的内容和例子还有很多,文章也会一直持续更新,感谢您看到这里,如果文章哪里有错误也请一定要和我说,一起进步,谢谢啦(*^_^*),希望本篇文章对您能够有所帮助!!

在这里插入图片描述


http://www.ppmy.cn/news/102117.html

相关文章

spring boot 单元测试JUnit5使用Mockito模拟Mock数据调用

spring boot 单元测试JUnit5使用Mockito模拟Mock数据调用 好大一批新用法,大家静下心来好好看看吧 文章目录 spring boot 单元测试JUnit5使用Mockito模拟Mock数据调用1. spring boot 使用 Mockito.when().thenReturn()模拟返回值1)测试mockito.when设置固…

银行面试遭遇两难情景题如何回答(下)

银行面试形式离不开自我介绍半结构化无领导群面、辩论赛等形式。遇到两难性问题,很多考生都不知道该如何作答,按照常规思维很容易给自己挖坑。今天就接着来说说遇到这类题如何回答?从如信银行考试中心了解到: 一、根据社会价值观进…

计算机网络第一章——计算机体系结构(上)

提示:剑未佩妥,出门已是江湖;酒尚余温,入口不识乾坤,愿历尽千帆,归来仍是少年。 文章目录 1.1.1 概念和功能计算机网络的概念计算机网络的功能计算机网络的发展——第一阶段第二阶段——三级结构第三阶段—…

北醒Modbus协议在Python下Tkinter模块实现功能配置的GUI设计

目录 实验目的测试环境Python库需求Benewake(北醒) TF雷达接线示意图库安装说明例程运行展示 实验目的 实现485接口系列雷达Modbus协议在Python下Tkinter模块实现功能配置的GUI设计。 本例程主要功能如下: 1.设备连接(已知雷达设备的波特率和站号&#…

类实例化和实例初始化

就算不写main方法里面的3句,也会执行5 1 10 6 因为main方法所在的类需要先加载和初始化 执行顺序如下:先初始化父类再初始化子类 静态实例变量显示赋值和静态代码块代码从上到下顺序执行(根据书写顺序) 子类的实例化方法&am…

MT6765 处理器参数 MTK6765芯片性能配置|详细参数

MT6765处理器,也被称为Helio P35,是联发科(MediaTek)推出的高性能智能芯片。作为目前市场上受欢迎的低成本智能芯片之一,MT6765以其卓越的性能和创新技术为用户提供了更加顺畅和高效的使用体验。 MT6765作为一款八核芯片,MT6765的…

C/C++编程技巧总结(提高代码质量)

目录 一、摘要 二、数据类型 1.使用基础数据类型 2.使用枚举类型 3.使用typedef关键字 三、数组和指针 1.使用函数指针 2.使用函数模板 3.使用函数对象 4.使用指针和数组 四、函数 1.使用默认参数 2.使用函数重载 3.使用inline函数 五、内存管理 1.使用RAII技术…

【华为OD统一考试B卷 | 100分】英文输入法(C++ Java JavaScript Python)

文章目录 题目描述输入描述输出描述用例C++JavaScriptJavaPython题目描述 主管期望你来实现英文输入法单词联想功能。 需求如下: 依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列,如果联想不到,请输出用户输入的单词前…