QT中控件不满足要求那么为你的控件做“提升”吧
  TEZNKK3IfmPf 2024年03月29日 66 0

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

一、新建控件

1、新建一个提升

我们可以在设计器中拖放任何控件,这里我们以textedit控件为例。
QT中控件不满足要求那么为你的控件做“提升”吧

点击提升即可,打开一个命名窗口,输入好名称后点击“添加”按钮
QT中控件不满足要求那么为你的控件做“提升”吧
接下来,我们就要为提升的控件,准备对应的代码文件和头文件了。点击提升按钮
QT中控件不满足要求那么为你的控件做“提升”吧

2、选择一个已有的提升

如果我们前面已经新建了提升,当我们在其他form中需要使用的时候,直接指定一个提升即可,不必再为同样功能的控件提升逐一写提升代码了。如下图:
QT中控件不满足要求那么为你的控件做“提升”吧

二、准备控件支持文件

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

提升是需要准备支持文件的,每个提升后的控件其实就是一个新的控件类,那么就需要cpp和h文件来支持。这里我们来一份空白的文件
QT中控件不满足要求那么为你的控件做“提升”吧
一定记得勾选include Qwidget,否则后面的代码编写要从零开始。这里可以省去很多麻烦
QT中控件不满足要求那么为你的控件做“提升”吧

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

当然,事情都是灵活的,你也可以利用界面设计器的widget窗体来完成,因为我们知道任何控件的父类都是widget
QT中控件不满足要求那么为你的控件做“提升”吧
只不过这里会多一个UI文件,我们时候将其删除即可。

三、编写必要代码

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

一开始,我们得到的头文件如下图这样
QT中控件不满足要求那么为你的控件做“提升”吧
cpp文件如这样
QT中控件不满足要求那么为你的控件做“提升”吧

假如我们要提升的为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的头文件去掉,还要修改下图所示标识部分的代码
QT中控件不满足要求那么为你的控件做“提升”吧
修改完后是这样:

#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、需要注意的是,如果你已经使用了控件的某些属性,那么在自定义控件中也须需要实现的。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年03月29日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月15日   24   0   0 qt
  TEZNKK3IfmPf   2023年11月15日   29   0   0 qt
  TEZNKK3IfmPf   2023年11月14日   45   0   0 qt配置
  TEZNKK3IfmPf   2023年11月15日   29   0   0 qt
  TEZNKK3IfmPf   2023年11月14日   56   0   0 qt
TEZNKK3IfmPf