定义了一个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 }
  1. 在您的 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】自定义小组件,直接使用的更多相关文章

  1. 微信小程序自定义音频组件,自定义滚动条,单曲循环,循环播放

    小程序自定义音频组件,带滚动条 摘要:首先自定义音频组件,是因为产品有这样的需求,需要如下样式的 而微信小程序API给我们提供的就是这样的 而且产品需要小程序有后台播放功能,所以我们不考虑小程序的 a ...

  2. 微信小程序——自定义图标组件

    字体图标在网页中非常常见了.为了方便在小程序里面重复使用,自定义了一个图标组件,方便控制它的大小,颜色,自定义点击事件. 自定义图标组件的代码如下: 下面的代码是icon文件夹下面的4个文件 inde ...

  3. jq 自定义标注小组件 $.widget

    html 部分 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  4. DRF之Jwt 实现自定义和DRF小组件及django-filter插件的使用

    一.DRF之Jwt 实现自定义 二.DRF(过滤,排序,分页)组件 三.Django-filter插件的使用和自定义 """ 1.drf-jwt手动签发与校验 :只是做t ...

  5. Android Widget小组件开发(一)——Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的!

    Android Widget小组件开发(一)--Android实现时钟Widget组件的步骤开发,这些知识也是必不可少的! PS:学习自某网站(不打广告) 这个小组件相信大家都很熟悉吧,以前的墨迹天气 ...

  6. 使用自定义验证组件库扩展 Windows 窗体

    使用自定义验证组件库扩展 Windows 窗体             1(共 1)对本文的评价是有帮助 - 评价此主题                          发布日期 : 8/24/20 ...

  7. Android-Widget桌面小组件

    1, 掌握Widget的用:Widget的用途,能够添加到手机桌面的程序 2, Widget的特点和用法步骤: 特点:快捷,方便,个性化,可自定义功能,可及时控制更新Widget显示内容 3, 用法步 ...

  8. drf-jwt手动签发与校验,drf小组件:过滤、筛选、排序、分页

    复习 """ 频率组件:限制接口的访问频率 源码分析:初始化方法.判断是否有权限方法.计数等待时间方法 自定义频率组件: class MyThrottle(SimpleR ...

  9. Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件

    本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...

  10. 总结Vue第二天:自定义子组件、父子组件通信、插槽

    总结Vue第二天:自定义子组件.父子组件通信.插槽 一.组件: 组件目录 1.注册组件(全局组件.局部组件和小demo) 2.组件数据存放 3.父子组件通信(父级向子级传递数据.子级向父级传递数据) ...

随机推荐

  1. 利用 Kubernetes 降本增效?EasyMR 基于 Kubernetes 部署的探索实践

    Kubernetes 是用于编排容器化应用程序的云原生系统.最初由 Google 创建,如今由 Cloud Native Computing Foundation(CNCF)维护更新. Kuberne ...

  2. ASP.NET Core Razor Pages 使用 视图(View) 组件

    参考文章地址:为什么要在 ASP.NET Core 中使用视图组件 (telerik.com)为什么使用视图组件而不是分部视图?最大的原因是,在 Razor 页面中插入分部视图时,与调用 View 关 ...

  3. GPRS DTU

    GPRS DTU ZLAN8305/ZLAN8305L是上海卓岚新推出的一款高性价比的串口232/485转GPRS DTU.这款的核心亮点是支持M级别的数据暂时存储 高性价比 支持MQTT 支持全网通 ...

  4. Python库积累之you-get库:网页视频与资源下载

    ↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓ you-get库是一个强大的视频网站下载工具,可以通过音视频网页的url链接直接下载包括视频,图片等媒体内容,从而解决一些网站视 ...

  5. Vue 开源项目低代码表单设计器 FcDesigner v3.3 版本发布!兼容Element Plus/Ant Design/Vant,支持PC/移动端

    FcDesigner 是一款基于 Vue 的低代码可视化表单设计器工具,通过数据驱动表单渲染.可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间.并广泛应用于在政务系统.OA ...

  6. SciTech-Mathmatics-Probability and Statistics: Differencing "mind"/"language"/"Concept"/"ideal"/"Context"/"notation"/"Symbol"/"Term"/"Axiom"/"Definition"/&

    SciTech-Mathmatics-Probability and Statistics: Differencing: "mind"/"language"/& ...

  7. 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 ...

  8. 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 ...

  9. SciTech-BigDataAIML-CV+CG-Digital Image Processing-编辑与合成RGBA图片与视频:RGB图片转换成RGBA:增加Alpha Mask(透明遮罩, 即Alpha Channel透明度通道)

    层层堆叠RGBA图片层就可实时修改图片与视频流 用AI自动生成RGBA格式的PNG图片:一层层堆叠. 这也是Adobe Photoshop的Mask原理? https://learnopencv.co ...

  10. SciTech-Mathmatics-Advanced Algebra-LinearAlgebra: 矩阵的相抵、相似与合同

    https://www.math.pku.edu.cn/teachers/baozq/algebra/alg1.htm 矩阵的相抵.相似与合同 基本概念: 相抵, 相抵标准形 相似, 对角化, 迹, ...