扬帆起航——Qt自定义控件介绍

news2024/11/22 15:18:29

文章目录

  • 前言
  • 自定义控件的定义
  • 自定义控件的好处
  • 如何实现自定义控件
    • 实现没有自带的控件
  • 如何使用自定义控件
  • 测试和优化
  • 常见的自定义控件
  • 总结


前言

Qt 提供了丰富的控件、工具和库,可以帮助开发人员快速创建现代化的跨平台应用程序。但是对于某些特殊的需求,现有的控件可能无法满足。这时,自定义控件成为了一个值得考虑的选择。Qt 提供了完善的 API 和开发工具,可以帮助开发人员轻松地创建自己的独特控件。通过本文的介绍,您可以了解自定义控件的优势、创建自定义控件的步骤以及常见的自定义控件。


自定义控件的定义

在我看来,自定义控件的定义如下:
实现没有自带的控件或使用原有的控件组合在一起实现一个新的控件
这就是定义。

自定义控件的好处

在我们日常使用软件的过程中,我们可以发现其他的软件的界面比我们高大上很多,但是当我们点开软件的安装路径的时候,就会发现他是Qt5或Qt6写的。
思考:
为什么我们自己写的界面却这么拉跨呢?
解决办法:
我们可以是用qss来美化我们的界面,这是一种方法,但是还有一种方法就是自定义控件。
对于我们编码技术:
在自定义控件中,我们需要熟悉原版qt的用,并灵活使用他,自定义控件对于我们编码有一个质的提升!

总结:
自定义控件可以提供更好的用户体验和更强的功能。通过自定义控件,开发人员可以更好地满足用户的需求,同时也可以提高应用程序的效率和美观度。以下是一些自定义控件的优势:

  • 更好的功能和性能
  • 更好的用户体验
  • 更好的设计和美观度
  • 更好的可维护性和可扩展性

如何实现自定义控件

实现没有自带的控件

在Qt基础教程中,我们知道,在QWidget中,我们可以使用QPainter类进行绘画,其实在Qt自带的控件都是通过QPainterQPainterPath、qt事件如:QMouseEvent组合起来实现的.
我们可以通过定义一个QWidget类,定义变量,操作函数等来实现他。
如下一个QRulerProgress的代码。
注:在qt原版中是没有的。


class RoundProgress : public QWidget
{
    Q_OBJECT
    void paintEvent(QPaintEvent *e);
    void drawBackGround(QPainter &p);
    void drawprogress(QPainter &p);

    QColor bgc;
    QColor ValueBgc;
    QColor TextColor;
    int PenWidth;
    int Value;
    QFont Textfont;

    QVariantAnimation *animation;
    int rate;

public:
    explicit RoundProgress(QWidget *parent = nullptr);
    void SetBackGroundColor(const QColor &c);
    void SetValueColor(const QColor &c);
    void SetTextColor(const QColor &c);
    void SetPenWidth(int width);
    void SetRange(int m,int max);
    void SetValue(int v);
    void SetFont(const QFont &f);
    void SetRate(int r);

signals:

};

我们通过定义变量,来实现绘制。
我们通过定义不同的操作函数让我们使用者快速使用。
在后面我会详细讲这些代码是如何去实现,还有如何去得到这种自定义的思想。
如果遇到我的文章没有讲到我会一一讲解。

如何使用自定义控件

在qt中,我们可以使用提升法来提升我们自己写的控件。
提升法:如有两个继承于QWidget的类w1,w2.w2是我们在.ui文件中拖拽出来的,w1是我们自己的控件,如果我们没有dll动态库,我们是不能在.ui文件中直接拖拽出我们的控件的,那怎么办?我们可以使用提升法,把w2变成w1。

在ui文件中拖拽出一个widget,右键他,可以看到提升为,点击他。
在这里插入图片描述

一般基类名称使用QWidget就可以,在我们自定义控件中。
在提升的类名称中输入你的控件,点击添加,提升。
在这里插入图片描述
如果你已经提升了某个类在上方,我们则可以直接双击他或者点击某个控件点击下面的提升。

在下一个专栏我会讲,我们如何把他做出一个dll/so等动态库文件,直接使用。

测试和优化

完成自定义控件后,您需要进行测试和优化。您可以测试控件的功能、性能和兼容性,以确保其可以正常工作并满足用户的要求。

常见的自定义控件

表盘控件
汽车仪表盘
圆弧仪表盘
百分比表盘
半圆仪表盘
进度仪表盘
速度仪表盘
范围仪表盘
简单指南针仪表盘
指南针
旋转仪表盘
进度控件
水波进度条
百分比进度
圆环进度条
等待进度条
弧形进度条
倒计时进度条

除了上面这些,还有很多,关注我吧,带你探索自定义控件这块神秘领域!

总结

总的来说,自定义控件好处多多,但是做这个要有毅力!
在以后的几个月我会不断更新自定义控件,大家可以评论让博主做不同的控件。

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

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

相关文章

【数据结构】冒泡,快速,直接插入,归并,选择排序

🎊专栏【数据结构】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Dream It Possible】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🎁冒泡排序 🏳️‍&…

CentOS7.4安装OpenVPN

系统环境 [rootvpn ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 一. 准备工作 [rootvpn ~]# yum -y install openssl-devel openssl pam pam-devel lzo lzo-devel pkcs11-helper pkcs11-helper-devel 二. 安装OpenVPN服务 1. 下载openvpn源码包 [r…

【计算机网络 - 第六章】链路层

目录 一、概述 1、数据链路层提供的服务? 二、差错检测 1、奇偶校验 2、循环冗余校验CRC 三、多路访问链路和协议 1、概述 (1)多路访问协议 2、信道划分协议 ① 频分多路复用FDM ② 时分多路复用TDM ③ 波分多路复用WDM ④ 码分…

更好看的国产蓝牙耳机,音质也没问题,哈氪零度青春版体验

夏天躲在空调房里戴着耳机听音乐、玩游戏是很多人的日常,这两年国产耳机做得越来越好了,设计也很有新意,像是我现在用的这款哈氪零度青春版,就采用了一种冰封造型设计,视觉效果很新颖,看起来很有立体感&…

【一个简单的前后端交互页面】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 客户端与服务器之间的通信流程 理解当前案例…

chatgpt赋能python:Python文件拆分技巧详解

Python 文件拆分技巧详解 随着数据量的不断增大,我们经常需要处理非常大的数据文件,这时候就需要用到文件拆分技巧。在Python中,文件拆分可以帮助我们提高数据处理的效率,这是一个非常实用的技巧。在本篇文章中,我们将…

奇巴布Feed流性能优化

01 项目背景 “爱奇艺奇巴布”是爱奇艺为0-8岁孩子和家长定制化设计的寓教于乐平台,为儿童量身打造精致的观看体验,精彩内容解锁寓教于乐新方式。为儿童提供优质动画内容的同时,我们更关注APP用户体验。在产品交互设计上我们立足儿童视角&…

抖音SEO矩阵系统开发分享及搭建流程

目录 产品功能亮点 产品介绍及开发背景 开发要求及实现流程 产品功能亮点 1. 支持多账号多平台一键 授权管理 2.支持矩阵视频批量剪辑,批量发布 3. 多平台关键词布局,提升企业及产品曝光 4. 评论区关键词自动回复,意向线索智能挖掘 5…

RTOS专栏(一) —— rt-thread简单介绍和qemu使用

本期主题: 简单介绍rt-thread介绍qemu和rt-thread怎么配合使用qemu的简单例子 rt-thread & qemu 1.rt-thread介绍2.qemu介绍3.搭建rt-thread和qemu开发环境4.简单例子 1.rt-thread介绍 RT-Thread 是一款完全由国内团队开发维护的嵌入式实时操作系统&#xff0…

《操作系统》期末主观题梳理

操作系统简答题 文章目录 操作系统简答题第一章第二章第三章第四章第五章第六章第七章第八章第九章 第一章 在计算机系统上配置OS(operating system, 操作系统)的目标是什么?作用主要表现在哪几个方面? 在计算机系统上配置OS, 主要目标是实现:方便性、有效性、可…

Error: Flash Download failed - Target DLL has been cancelled

文章目录 背景参考 背景 在使用keilv5进行STM32开发时,配置用JLink进行文件烧录,出现如下错误: 查阅资料,是因为Keil未识别烧录工具,需要进行下面的操作: 1.打开工程配置窗口,点开Debug选项卡…

并查集专题

⭐️前言⭐️ 本篇文章主要介绍与并查集相关的题目。 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言 🍉博客中涉及源码及博主…

阿里「通义千问」内测详细使用体验

名人说:一花独放不是春,百花齐放花满园。——《增广贤文》 作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、简要介绍二、分类问题测试0️⃣自我介绍1️⃣生成内容2️⃣回答问题3️⃣对话协…

springboot+vue大学生租房系统(java项目源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的大学生租房系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌…

太稳了,支付系统就该这么设计

支付中心系统对内为各个业务线提供统一的支付、退款等服务,对外对接三方支付或银行服务实现资金的流转。如下图: 大部分公司基本都是这样的架构,主要有以下几方面的优点: 形成统一支付服务,降低业务线接入成本及重复研…

数据结构-树,森连,二叉树之间的转换

树》二叉树 1.给兄弟加线 2.给出长子外的孩子去线 3.层次调整 (整体向左偏移45) eg: 1.给兄弟加线: 2.给处长紫外的孩子去线 3.层次调整,整体向左偏移45 (由兄弟转化来的孩子都是右节点&#xff0c…

DJ6-5 目录管理

目录 6.5.1 文件控制块和索引结点 1、文件控制块 FCB 2、索引节点 6.5.2 简单文件目录 1、单级目录结构 2、二级目录结构 3、树形目录结构 6.5.3 目录查询技术 1、线性检索法 2、Hash 方法 文件目录:是指由文件说明索引组成的用于文件检索的特殊文件…

chatgpt赋能python:Python文件复制到指定文件夹——实现简单又高效的文件操作

Python 文件复制到指定文件夹——实现简单又高效的文件操作 如今,人们对于数据的需求越来越多,因此在编程过程中,对于文件的操作也变得越来越重要。而Python作为一种高效而简洁的编程语言,其文件操作也是十分出色的。本文将会带领…

C/C++ ---- 内存管理

目录 C/C内存分布 常见区域介绍 经典习题(读代码回答问题) 选择题 填空题 C语言内存管理方式 malloc/free calloc realloc C内存管理方式 new和delete操作内置类型 new和delete操作自定义类型 operator new和operator delete函数 new和dele…

Linux环境变量总结

Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。 设置环境变量的方法 对所有用户生效的永久性变量 这类变…