QT中控件不满足要求那么为你的控件做“提升”吧

news2024/11/19 22:33:30

我们在VisualStudio中例如VC或者C#中写一些个性化比较强的项目都会对控件有更高的要求,那么当我们的要求得不到满足时就需要考虑用到自定义控件了,其中自定义控件有两种方式,一种是完全重写,另一种简单的方法是继承自现有的控件。
这里我们说控件提升就是QT中采用继承自现有控件类的一种自定义控件,只不过这里的提升比VS中的自定义控件来得更加容易。简单两步即可完成!

一、新建控件

1、新建一个提升

我们可以在设计器中拖放任何控件,这里我们以textedit控件为例。
在这里插入图片描述

点击提升即可,打开一个命名窗口,输入好名称后点击“添加”按钮
在这里插入图片描述
接下来,我们就要为提升的控件,准备对应的代码文件和头文件了。点击提升按钮
在这里插入图片描述

2、选择一个已有的提升

如果我们前面已经新建了提升,当我们在其他form中需要使用的时候,直接指定一个提升即可,不必再为同样功能的控件提升逐一写提升代码了。如下图:
在这里插入图片描述

二、准备控件支持文件

1、选择空白类文件编写支持文件

提升是需要准备支持文件的,每个提升后的控件其实就是一个新的控件类,那么就需要cpp和h文件来支持。这里我们来一份空白的文件
在这里插入图片描述
一定记得勾选include Qwidget,否则后面的代码编写要从零开始。这里可以省去很多麻烦
在这里插入图片描述

2、利用窗体类获取支持文件

当然,事情都是灵活的,你也可以利用界面设计器的widget窗体来完成,因为我们知道任何控件的父类都是widget
在这里插入图片描述
只不过这里会多一个UI文件,我们时候将其删除即可。

三、编写必要代码

1、利用空白类获取支持文件的代码编写

一开始,我们得到的头文件如下图这样
在这里插入图片描述
cpp文件如这样
在这里插入图片描述

假如我们要提升的为textedit控件,那么修改好的代码为:

#ifndef NEWTEXTEDIT_H
#define NEWTEXTEDIT_H

#include <QWidget>
#include <QTextEdit>

class newTextEdit : public QTextEdit
{
    Q_OBJECT
public:
    newTextEdit(QWidget *parent = 0);
};

#endif // NEWTEXTEDIT_H

修改好了的cpp文件

#include "newtextedit.h"

newTextEdit::newTextEdit(QWidget *parent)
    : QTextEdit(parent)
{

}

2、利用窗体类获取支持文件的代码编写

和生成一个窗体一样,系统会为我们生成三个文件,这样我们只要小小的修改就可以了,除了把包涵的ui的头文件去掉,还要修改下图所示标识部分的代码
在这里插入图片描述
修改完后是这样:

#include "newtextedit.h"
newTextEdit::newTextEdit(QWidget *parent) :
    QTextEdit(parent)
{
    //ui->setupUi(this);
}

newTextEdit::~newTextEdit()
{
    delete ui;
}

cpp文件这样

#ifndef NEWTEXTEDIT_H
#define NEWTEXTEDIT_H

#include <QWidget>
#include <QTextEdit> //增加控件的类

namespace Ui {
class newTextEdit;
}

class newTextEdit : public QTextEdit //继承的父类修改为控件类
{
    Q_OBJECT

public:
    explicit newTextEdit(QWidget *parent = 0);
    ~newTextEdit();

private:
    Ui::newTextEdit *ui;
};

#endif // NEWTEXTEDIT_H

三、需要注意的

1、两种获取支持文件的方式,我强烈推荐第二种,通过窗体设计类获取,第一种空白类文件的修改过于麻烦
2、需要注意的是,如果你已经使用了控件的某些属性,那么在自定义控件中也须需要实现的。

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

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

相关文章

指针深度解剖,从内存详细了解指针

目录 &#x1f695;第一组&#xff1a;一维数组 &#x1f68c;第二组&#xff1a;字符数组 &#x1f690;字符数组1.0 &#x1f68e;字符数组1.1 &#x1f691;字符数组2 &#x1f69a;字符数组3 &#x1f69c;第三组&#xff1a;二维数组 &#x1f697;在上次的博客之中我们…

INVS里的DanglingWire的自动化清理实战

在上一讲中一起了解了INVS里的DanglingWire&#xff08;innovus中的DanglingWire&#xff08;悬垂线&#xff09;的理解和处理&#xff09;&#xff0c;常言道理论联系实际&#xff0c;在理解原理的基础上&#xff0c;那一定是要服务项目的&#xff0c;这篇后续火速跟进&#x…

中国第一个 Apache 顶级开源项目的突围之路!

【CSDN 编者按】近些年开源大热&#xff0c;开源创业之风随之四起。作为近两年特别火的商业方向&#xff0c;开源创业者如何才能在一片红海中乘风破浪&#xff0c;在行业中占据一席之地&#xff1f;第一个由中国人主导贡献到 ASF 的顶级开源项目 Apache Kylin 做出了有效探索&a…

字节序,主机字节序与网络字节序

&#x1f4cc;————本章重点————&#x1f4cc; &#x1f517;了解字节序的概念; &#x1f517;了解大小端的概念;&#x1f517;了解主机字节序和网络字节序的区别;&#x1f517;学习主机字节序和网络字节序相机转化的接口; ✨————————————✨字节序 概念&am…

人工智能助力古彝文识别,推动传统文化传承

人工智能助力古彝文识别&#xff0c;推动传统文化传承0. 前言1. 古彝文1.1 古彝文介绍1.2 古彝文识别的重要意义1.3 古彝文识别的挑战2. 古彝文识别国内外研究进展3. 基于深度学习的古彝文识别3.1 深度学习简介3.2 基于深度学习的古彝文识别模型架构4. 古彝文识别进展与展望小结…

HTML小游戏19 —— html5版开心斗地主小游戏(附完整源码)

&#x1f482; 网站推荐:【神级源码资源网】【摸鱼小游戏】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】本节教程我会带大家使用 HTML…

【练习】Day05

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录一、选择二、编程1. 跳跃游戏[贪心算法]2. 寻找重复数[注意思路&#xff01;]答案1. 选择2. 编程普通小孩也要热爱生活&#xff01; 一、选择 HASH 函数冲突处理方式不包括以下哪一项&#xff1a;&#xff08;&…

YOLOv5源码详解——项目目录

YOLOv5 目录 .github .github相关&#xff0c;不重要 datasets 存放数据集,刚下载下来的源码是不包含这个文件夹的 classify 图像分类模块&#xff0c;包含以下4个文件 predict.py —— 图像分类预测脚本train.py ——图像分类训练脚本val.py —— 图像分类验证脚本tutorial.…

Java开发学习(四十一)----MyBatisPlus标准数据层(增删查改分页)开发

一、标准CRUD使用 对于标准的CRUD功能都有哪些以及MyBatisPlus都提供了哪些方法可以使用呢? 我们先来看张图: 1.1 环境准备 这里用的环境就是Java开发学习(四十)----MyBatisPlus入门案例与简介中使用的环境 二、新增 在进行新增之前&#xff0c;我们可以分析下新增的方法…

马蹄集 公式计算

公式计算 难度&#xff1a;青铜 01 时间限制&#xff1a;1秒巴占用内存&#xff1a;64M 计算公式 (1/2)*(a*xc(ac)/(4*a)》 格式 输入格式&#xff1a;输入为整型x,a,空格分隔 #include <bits/stdc.h> using namespace std; int main() {int x, a;cin >> x >&g…

1、JDK17安装

目录 一、简介 二、安装步骤 三、在Windows 10系统中配置环境变量 四、运行jdk 一、简介 JDK全称Java SE Development kit(JDK)&#xff0c;即java标准版开发包&#xff0c;是Oracle提供的一套用于开发java应用程序的开发包&#xff0c;它提供编译&#xff0c;运行java程…

二叉树【数据结构】【超详细,一学就会!!!】

目录 &#x1f4d6;1.什么是二叉树&#xff1f; &#x1f334;2.满二叉树和完全二叉树 ⛳2.二叉树的性质 &#x1f525;3.二叉树的创建与遍历 3.1 创建二叉树 3.2 前中后序遍历——递归和非递归 &#x1f3f9;4.二叉树的实现 1️⃣获取树中节点的个数 2️⃣获取叶子节点…

MATLAB-三维插值运算

MATLAB中是支持三维及三维以上的高维插值的。三维插值的基本原理与一维插值和二维插值是一样的&#xff0c;但三维插值是对三维函数进行的插值。在MATLAB中&#xff0c;使用interp3函数实现插值&#xff0c;其调用格式如下。vi interp3(x,y,z,v,xi,yi,zi) %返回值 vi是三维插值…

2022ICPC杭州站

A. Modulo Ruins the Legend 题目链接&#xff1a;Problem - A - Codeforces 样例1输入&#xff1a; 6 24 1 1 4 5 1 4样例1输出&#xff1a; 1 0 5样例2输入&#xff1a; 7 29 1 9 1 9 8 1 0样例2输出&#xff1a; 0 0 0题意&#xff1a;给你一个长度为n的数组a[]&#x…

【NI Multisim 14.0原理图的设计——原理图分类】

目录 序言 一、原理图的设计 &#x1f34a;知识点&#xff1a; 二、原理图分类 &#x1f349;1.平坦式电路 &#x1f349; 2.层次式电路图 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设计者方便、快捷地使用虚拟元器件和仪器、仪表进行电路设计和…

【用JS自制表格软件玩数据】10. 为表格脚本设计一个语法解析器

设计脚本语言的语法解析器概述脚本源码语法预览运行效果如下图设计计算符号的优先级定义一些关键词生成一份关键词的map方便引用枚举关键词的类型错误异常的捕获字符匹配代码的字符转化成迭代器关键词标记器词法分析器设计一个队列处理器源代码字符串迭代器代码的块级运行环境脚…

【HTML基础篇003】前端基础之CSS选择器大全

✨一、CSS的基本介绍 CSS&#xff08;Cascading Style Sheet&#xff0c;层叠样式表)定义如何显示HTML元素。 当浏览器读到一个样式表&#xff0c;它就会按照这个样式表来对文档进行格式化&#xff08;渲染&#xff09;。 ✨二、CSS的几种引入方式 &#x1f338;2.1、方法一&am…

连接查询之内连接(等值连接、非等值连接和自连接)

1、等值连接&#xff1a;表连接条件是等值关系&#xff0c;我们称为等值连接。 需求&#xff1a;查询每个员工所在部门名称&#xff0c;显示员工名和部门名&#xff1a; 查看员工表的ename和deptno字段信息&#xff1a; 查看部门表中的deptno和dname字段信息 SQL92语法&#x…

2023年最值得关注的机器人趋势TOP10

新兴的机器人技术趋势和预测满足了对工业自动化、数字化和可持续性的需求。仓库中的材料处理由自动移动机器人&#xff08;AMR&#xff09;和自动引导车辆&#xff08;AGV&#xff09;实现自动化。相关机构对8949家全球初创企业和2023年机器人趋势规模的样本进行了研究&#xf…

Linux的安装(云服务器专讲)

一、Linux环境的安装有一下几种方式&#xff1a;双系统或则将自己的笔记本搞成Linux系统——严重不推荐&#xff0c;这样安装成本高、并且容易把自己电脑弄坏。虚拟机推荐wmware player这是免费的&#xff0c;并且推荐是打在了centos7.x版本的&#xff0c;这个的好处就是不需要…