Qt5自定义控件-Qt Designer中直接拖动

本文详细指导如何在Qt环境中创建一个自定义的控件CustomPushButton,包括设置属性、编译步骤,以及如何在QtDesigner中添加并引用该控件,以实现字体大小等自定义功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果:20240102_104733.gif
以下以新建一个自定义按钮为例。
优快云免积分资源

  1. 新建一个Qt项目,选择“其他项目”->"Qt4设计师自定义控件“

image.png

  1. 填入项目名称: CustomPushButton。勾选构建的套件,MinGW构建的控件不能够在MSVC编译器下的项目使用,同样MSVC构建的控件不能够在MinGW编译器下项目使用。
    在这里插入图片描述

  2. 点击下一步,修改控件类名称,会自动生成其他的输入内容,可以根据自己的需求进行修改,例如可以自定义这个控件的显示图标。

image.png

  1. 切换到“说明”选项卡,填入组名称。

image.png
组名称是在Qt Designer中控件所属的组,如下:
image.png

  1. 点击下一步,填入插件名称,可以自己定义。后面默认点击下一步

image.png

  1. 工程创建完成后我们需要对项目文件进行一些修改。首先是“customqpushbutton”下的头文件
    在这里插入图片描述

    修改为:
#ifndef CUSTOMPUSHBUTTON_H
#define CUSTOMPUSHBUTTON_H

#include <QWidget>
#include <QPushButton>
#include <QtUiPlugin/QDesignerExportWidget>


class QDESIGNER_WIDGET_EXPORT CustomPushButton : public QPushButton
{
    Q_OBJECT

public:
    CustomPushButton(QWidget *parent = 0);
};

#endif // CUSTOMPUSHBUTTON_H
  1. 修改项目头文件中的“customqpushbuttonplugin.h”文件。

#include <QDesignerCustomWidgetInterface>

修改为

#include <QtUiPlugin/QDesignerCustomWidgetInterface>

image.png

  1. 此时即可对这个自定义按钮添加一些自定义的属性。例如我们添加一个按钮字体大小的属性:fontSize

控件的属性有读和写两个方法。
我们在custompushbutton.h中定义属性:

Q_PROPERTY(int fontSize READ getFontSize WRITE setFontSize)

添加读写两个方法和字体大小成员变量

private:
    int getFontSize() const;

    void setFontSize(const int &size);
    
private:
    /// 字体大小
    int fontSize = 12;
int CustomPushButton::getFontSize() const {
    return fontSize;
}

void CustomPushButton::setFontSize(const int &size) {
    fontSize = size;
    this->setStyleSheet(tr("QPushButton{font-size:%1px;}").arg(fontSize));
    this->update();
}
  1. 自定义属性完成之后即可开始对项目编译,选择你编译器,点击构建
    在这里插入图片描述

  2. 构建完成后即可在项目编译文件夹中找到生成的dll文件

image.png

  1. 我们将生成的这个dll文件放到Qt的designer文件夹中

image.png

  1. 此时打开Qt designer,即可在控件栏找到我们刚才新建的按钮控件

image.png
将这个控件拖动到我们的窗口,可以在属性编辑器中看到我们添加的字体大小的属性,修改这个属性,可以观察到控件的字体大小发生了变化。
image.png

  1. 此时我们已经完成了对自定义控件的封装。当我们希望引用这个控件到我们的项目中时,需要对其dll库和头文件进行引用。即在新项目的头文件中。
  2. 将头文件custompushbutton.h和生成的dll库放到我们新建的项目文件夹中(或者其他的路径),在新项目的pro文件中引用dll库,并添加头文件路径,如下:
# 自定义控件头文件&库文件
INCLUDEPATH += $$PWD/custom/include

# 按照debug、release区分库名称,MinGW和MSVC调用不同文件夹库
CONFIG(debug, debug|release){
    win32-g++ {
        LIBS += -L$$PWD/custom/MinGW -lcustompushbuttond
    }
    else:msvc {
        LIBS += -L$$PWD/custom/MSVC -lcustompushbuttond
    }
}
else {
    win32-g++ {
        LIBS += -L$$PWD/custom/MinGW -lcustompushbutton
    }
    else:msvc {
        LIBS += -L$$PWD/custom/MSVC -lcustompushbutton
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

taciturn丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值