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

效果:Qt5自定义控件-Qt Designer中直接拖动_第1张图片
以下以新建一个自定义按钮为例。
CSDN免积分资源

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

Qt5自定义控件-Qt Designer中直接拖动_第2张图片

  1. 填入项目名称: CustomPushButton。勾选构建的套件,MinGW构建的控件不能够在MSVC编译器下的项目使用,同样MSVC构建的控件不能够在MinGW编译器下项目使用。
    Qt5自定义控件-Qt Designer中直接拖动_第3张图片

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

Qt5自定义控件-Qt Designer中直接拖动_第4张图片

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

Qt5自定义控件-Qt Designer中直接拖动_第5张图片
组名称是在Qt Designer中控件所属的组,如下:
Qt5自定义控件-Qt Designer中直接拖动_第6张图片

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

Qt5自定义控件-Qt Designer中直接拖动_第7张图片

  1. 工程创建完成后我们需要对项目文件进行一些修改。首先是“customqpushbutton”下的头文件
    Qt5自定义控件-Qt Designer中直接拖动_第8张图片

    修改为:
#ifndef CUSTOMPUSHBUTTON_H
#define CUSTOMPUSHBUTTON_H

#include 
#include 
#include 


class QDESIGNER_WIDGET_EXPORT CustomPushButton : public QPushButton
{
    Q_OBJECT

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

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

#include 

修改为

#include 

Qt5自定义控件-Qt Designer中直接拖动_第9张图片

  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. 自定义属性完成之后即可开始对项目编译,选择你编译器,点击构建
    Qt5自定义控件-Qt Designer中直接拖动_第10张图片

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

Qt5自定义控件-Qt Designer中直接拖动_第11张图片

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

Qt5自定义控件-Qt Designer中直接拖动_第12张图片

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

Qt5自定义控件-Qt Designer中直接拖动_第13张图片
将这个控件拖动到我们的窗口,可以在属性编辑器中看到我们添加的字体大小的属性,修改这个属性,可以观察到控件的字体大小发生了变化。
Qt5自定义控件-Qt Designer中直接拖动_第14张图片

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

你可能感兴趣的:(Qt,qt)