QT6 关于使用MSVC2019,UI设计师自定义控件的制作和QT Cretor里面调用
本次Demo以QT6.5.3版本,MSVC2019 64bin编译环境,组件使用Slider为例
一、生成自定义插件。
步骤1:创建一个ui设计师自定义控件工程
步骤2:创建编译环境,最好是QT Creator的版本和编译的版本一致,比如QT Creator使用的6.5.3的话,也用QT6.5.3的版本编译,然后注意是使用MSVC还是其他环境,本次以MSVC2019 64Bin为例。
步骤3:控件类
步骤4:基本工程创建完成
步骤5:只需要修改3个文件MyHSlider.pro ;myhslider.h ;myhslider.c
这是myhslider.h原始代码,需要添加Q_DECL_EXPORT ,#include <QtUiPlugin/QDesignerExportWidget>
#ifndef MYHSLIDER_H
#define MYHSLIDER_H#include <QWidget>class MyHSlider : public QWidget
{Q_OBJECTpublic:explicit MyHSlider(QWidget *parent = nullptr);
};#endif // MYHSLIDER_H
修改后
#ifndef MYHSLIDER_H
#define MYHSLIDER_H#include <QWidget>
#include <QtUiPlugin/QDesignerExportWidget>#include <QSlider>#ifdef MYDesigner_LIBRARY // 插件构建时定义
class Q_DECL_EXPORT MyHSlider : public QSlider
#else
class MyHSlider : public QSlider
#endif
{Q_OBJECTpublic:explicit MyHSlider(QWidget *parent = 0);protected:void paintEvent(QPaintEvent *);void mousePressEvent(QMouseEvent *);}
在.pro文件需要多加 DEFINES += MYDesigner_LIBRARY和上面的.h文件的对应,不然调用时会报一个静态变量报错之类的东西。
CONFIG += plugin debug_and_release
TARGET = $$qtLibraryTarget(Myhsliderplugin)
TEMPLATE = lib# 添加条件宏定义,用于区分插件构建和使用
DEFINES += MYDesigner_LIBRARYHEADERS = myhsliderplugin.h
SOURCES = myhsliderplugin.cpp
RESOURCES = icons.qrc
LIBS += -L. QT += designertarget.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS += targetinclude(myhslider.pri)
步骤6,导出.LIB和.dll文件,debug和release都导出
点击到对于的debug和release,然后再点击构建里面的qmake,然后再点击重新构建
步骤7 需要把relesae中的.dll和.lib放到
D:\Qt6\Tools\QtCreator\bin\plugins\designer (QT Creator 中的.ui界面中拖拽显示)
D:\Qt6\6.5.3\msvc2019_64\plugins\designer (QT Designer 中拖拽显示)
此时,如果成功的话,就可以在qt Creator .ui组件中显示并且可以拖拽出来了。
二、调用插件
步骤一:打开工程,点击.ui文件,进入组件拖拽页面,直接拖拽自定义组件,和qt原始组件的方式调用方式一样。
步骤二,需要添加该组件的头文件
步骤3 把.lib放到工程下
在工程里面添加这个库
勾选debug版本,调试和release都可以使用
然后会自动帮你在.pro文件里面添加
步骤4 此时如果你点运行,会提升你缺少.dll文件
所以要把对于debug和release的.dll放到对于的编译文件夹里面
然后你再点击运行,就可以正常使用了。
点击.exe也是一样的效果。基本就这样了。