【QML】自定义小组件,直接使用
定义了一个Component,id为customButtonComponent,但是并没有将其定义为CustomButton类型。在QML中,要创建一个可重用的自定义组件,通常需要创建一个单独的QML文件(例如CustomButton.qml),或者使用Component并在其他地方实例化。
1、方案一:将自定义按钮转换为单独的可重用组件
创建一个单独的CustomButton.qml文件
1 // CustomButton.qml
2 import QtQuick 2.15
3 import QtQuick.Controls 2.15
4
5 Button {
6 property alias textColor: btnText.color
7
8 background: Rectangle {
9 gradient: Gradient {
10 GradientStop {
11 position: 0.0;
12 color: parent.down ? "#2A3F5F" :
13 (parent.hovered ? "#2A3F5F" : "#1E2A4A")
14 }
15 GradientStop {
16 position: 1.0;
17 color: parent.down ? "#1E2A4A" :
18 (parent.hovered ? "#1E2A4A" : "#2A3F5F")
19 }
20 }
21 radius: 6
22 border.color: "#00E5FF"
23 border.width: 2
24 }
25
26 contentItem: Text {
27 id: btnText
28 text: parent.text
29 font.bold: true
30 font.pointSize: 10
31 color: "#00E5FF"
32 horizontalAlignment: Text.AlignHCenter
33 verticalAlignment: Text.AlignVCenter
34 }
35 }
在您的
main.qml中导入包含CustomButton.qml的目录:
import "components" // 假设 CustomButton.qml 在 components 目录中
2、方案二:使用内联组件定义(适用于 Qt 5.15+)
1 Component {
2 id: webSocketComp
3 Popup {
4 // ... 其他代码保持不变 ...
5
6 // 按钮区域
7 RowLayout {
8 Layout.fillWidth: true
9 Layout.preferredHeight: 40
10 spacing: 12
11
12 Item {
13 Layout.fillWidth: true
14 }
15
16 // 使用内联组件定义
17 component CustomButton: Button {
18 property alias textColor: btnText.color
19
20 background: Rectangle {
21 gradient: Gradient {
22 GradientStop {
23 position: 0.0;
24 color: parent.down ? "#2A3F5F" :
25 (parent.hovered ? "#2A3F5F" : "#1E2A4A")
26 }
27 GradientStop {
28 position: 1.0;
29 color: parent.down ? "#1E2A4A" :
30 (parent.hovered ? "#1E2A4A" : "#2A3F5F")
31 }
32 }
33 radius: 6
34 border.color: "#00E5FF"
35 border.width: 2
36 }
37
38 contentItem: Text {
39 id: btnText
40 text: parent.text
41 font.bold: true
42 font.pointSize: 10
43 color: "#00E5FF"
44 horizontalAlignment: Text.AlignHCenter
45 verticalAlignment: Text.AlignVCenter
46 }
47 }
48
49 CustomButton {
50 id: connectButton
51 text: "连接"
52 width: 80
53 height: 36
54 onClicked: {
55 // 连接WebSocket逻辑
56 }
57 }
58
59 CustomButton {
60 id: disconnectButton
61 text: "断开"
62 width: 80
63 height: 36
64 enabled: false
65 onClicked: {
66 // 断开WebSocket逻辑
67 }
68 }
69
70 CustomButton {
71 id: sendButton
72 text: "发送"
73 width: 80
74 height: 36
75 enabled: false
76 onClicked: {
77 // 发送消息逻辑
78 }
79 }
80 }
81 }
82 }
【QML】自定义小组件,直接使用的更多相关文章
- 微信小程序自定义音频组件,自定义滚动条,单曲循环,循环播放
小程序自定义音频组件,带滚动条 摘要:首先自定义音频组件,是因为产品有这样的需求,需要如下样式的 而微信小程序API给我们提供的就是这样的 而且产品需要小程序有后台播放功能,所以我们不考虑小程序的 a ...
- 微信小程序——自定义图标组件
字体图标在网页中非常常见了.为了方便在小程序里面重复使用,自定义了一个图标组件,方便控制它的大小,颜色,自定义点击事件. 自定义图标组件的代码如下: 下面的代码是icon文件夹下面的4个文件 inde ...
- jq 自定义标注小组件 $.widget
html 部分 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- DRF之Jwt 实现自定义和DRF小组件及django-filter插件的使用
一.DRF之Jwt 实现自定义 二.DRF(过滤,排序,分页)组件 三.Django-filter插件的使用和自定义 """ 1.drf-jwt手动签发与校验 :只是做t ...
- Android Widget小组件开发(一)——Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的!
Android Widget小组件开发(一)--Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的! PS:学习自某网站(不打广告) 这个小组件相信大家都很熟悉吧,以前的墨迹天气 ...
- 使用自定义验证组件库扩展 Windows 窗体
使用自定义验证组件库扩展 Windows 窗体 1(共 1)对本文的评价是有帮助 - 评价此主题 发布日期 : 8/24/20 ...
- Android-Widget桌面小组件
1, 掌握Widget的用:Widget的用途,能够添加到手机桌面的程序 2, Widget的特点和用法步骤: 特点:快捷,方便,个性化,可自定义功能,可及时控制更新Widget显示内容 3, 用法步 ...
- drf-jwt手动签发与校验,drf小组件:过滤、筛选、排序、分页
复习 """ 频率组件:限制接口的访问频率 源码分析:初始化方法.判断是否有权限方法.计数等待时间方法 自定义频率组件: class MyThrottle(SimpleR ...
- Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...
- 总结Vue第二天:自定义子组件、父子组件通信、插槽
总结Vue第二天:自定义子组件.父子组件通信.插槽 一.组件: 组件目录 1.注册组件(全局组件.局部组件和小demo) 2.组件数据存放 3.父子组件通信(父级向子级传递数据.子级向父级传递数据) ...
随机推荐
- 利用 Kubernetes 降本增效?EasyMR 基于 Kubernetes 部署的探索实践
Kubernetes 是用于编排容器化应用程序的云原生系统.最初由 Google 创建,如今由 Cloud Native Computing Foundation(CNCF)维护更新. Kuberne ...
- ASP.NET Core Razor Pages 使用 视图(View) 组件
参考文章地址:为什么要在 ASP.NET Core 中使用视图组件 (telerik.com)为什么使用视图组件而不是分部视图?最大的原因是,在 Razor 页面中插入分部视图时,与调用 View 关 ...
- GPRS DTU
GPRS DTU ZLAN8305/ZLAN8305L是上海卓岚新推出的一款高性价比的串口232/485转GPRS DTU.这款的核心亮点是支持M级别的数据暂时存储 高性价比 支持MQTT 支持全网通 ...
- Python库积累之you-get库:网页视频与资源下载
↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓ you-get库是一个强大的视频网站下载工具,可以通过音视频网页的url链接直接下载包括视频,图片等媒体内容,从而解决一些网站视 ...
- Vue 开源项目低代码表单设计器 FcDesigner v3.3 版本发布!兼容Element Plus/Ant Design/Vant,支持PC/移动端
FcDesigner 是一款基于 Vue 的低代码可视化表单设计器工具,通过数据驱动表单渲染.可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间.并广泛应用于在政务系统.OA ...
- SciTech-Mathmatics-Probability and Statistics: Differencing "mind"/"language"/"Concept"/"ideal"/"Context"/"notation"/"Symbol"/"Term"/"Axiom"/"Definition"/&
SciTech-Mathmatics-Probability and Statistics: Differencing: "mind"/"language"/& ...
- USB(2.0 / Type-C) to MPSSE(JTAG / SPI / IIC) / UART / FIFO: FTDI 的FT4232H配成SPI+JTAG+Two Ways UART使用实例
1 pcs. FTDI FT4232H (Four Channels): Channel 0: 1 way SPI Interface Channel 1: 1 way JTAG Interface ...
- OS-Ubuntu-Server-Connect to Wi-Fi using "netplan" From Terminal on Debian 11/10 with WPA Supplicant
0.netplan: netplan generate netplan apply wget https://dl.google.com/linux/direct/google-chrome-stab ...
- SciTech-BigDataAIML-CV+CG-Digital Image Processing-编辑与合成RGBA图片与视频:RGB图片转换成RGBA:增加Alpha Mask(透明遮罩, 即Alpha Channel透明度通道)
层层堆叠RGBA图片层就可实时修改图片与视频流 用AI自动生成RGBA格式的PNG图片:一层层堆叠. 这也是Adobe Photoshop的Mask原理? https://learnopencv.co ...
- SciTech-Mathmatics-Advanced Algebra-LinearAlgebra: 矩阵的相抵、相似与合同
https://www.math.pku.edu.cn/teachers/baozq/algebra/alg1.htm 矩阵的相抵.相似与合同 基本概念: 相抵, 相抵标准形 相似, 对角化, 迹, ...