当前位置: 首页 > news >正文

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也是一样的效果。基本就这样了。

http://www.xdnf.cn/news/695917.html

相关文章:

  • Redis 用的 Gossip 协议有哪些具体消息?
  • 瓶装燃气送气工如何规范服务?
  • 浅析AI数据采集和标注在运动健康领域的落地应用
  • AD-PCB--元件库介绍及电阻电容模型的创建 DAY4
  • 可变参数函数
  • 74道Node.js高频题整理(附答案背诵版)
  • 记一次 Qwen3-0.6B 微调 内容提取
  • 让爱延续,共筑养老服务产业的美好未来
  • 二重积分 面积微元 微小矩形 dxdy 微小扇形 r * drdθ
  • 动静态库的制作
  • c++ 拷贝构造函数
  • JVM——Truffle:语言实现框架
  • 【机器学习基础】机器学习入门核心算法:朴素贝叶斯(Naive Bayes)
  • Spring AI 1.0 GA 深度解析:构建企业级AI应用的全栈实践指南
  • Linux的基本指令
  • vscode 终端 PATH 和python pip 不对
  • CSS (mask)实现服装动态换色:创意与技术的完美融合
  • HIS换代升级辅助脚手架:数据清洗、人员信息标准化、电子病历接口标准化、多模态影像接口标准化
  • 三级联动获取省市区
  • 8种常见数据结构及其特点简介
  • 排查Oracle文件打开数过多
  • JAVA 笔记
  • 【超详细教程】零基础本地部署DeepSeek-Coder-v2 16B!Ollama+GPU加速,100%跑通!
  • CCLINKIE转PROFINET:让执行器“丝滑”入网!
  • 脑机新手指南(一):BCILAB 脑机接口工具箱新手入门指南
  • 从新安全法到隐患判定标准:特种设备证件管理政策全梳理
  • vben-admin 2.8.0 版本修改 axios响应处理逻辑
  • MySQL:零基础入门(狂神版)
  • PyTorch安装Cuda版本选择
  • WMS系统选型与实施避坑手册