设计和使用Qt Designer Widget插件时遇到的问题记录及解决方案

最近在学习Qt中的自定义插件和库,然后在设计和使用Qt Desiger Widget插件时,发现无法找到我自己设计的Widget插件,于是分析和查询了一番,又发现了好多问题,最后一步一步分析与查询,最终成功解决了问题,成功使用自己的自定义插件,在这过程中也对一些构建配置、链接库有了更深的理解。

问题描述

Qt自定义的widget插件无法在Designer中显示

首先检查自己项目文件夹中release版本,发现里面只有.dll文件而没有.lib文件,于是我怀疑是不是构建配置的环境有问题,查寻帮助文档以及一些提示,发现Qt自带默认的编译器是 MinGW,Windows 平台 Qt Creator 是由 Visual Studio 编译生成的程序(MSVC编译),两个编译器不一样,这样在就导致在Qt Designer无法加载出来自定义好的插件。 那么如何才能在Qt Creator中使用自定义的插件呢?目前得知两种方法:

  • 一是用MinGW编译一一个Qt Creator,这样Qt Creator就能加载出MinGW编译出来的插件了
  • 二是使用MSVC版本来构建,用其重新编译一下自定义的插件,这样就能直接加载了

这里我使用的是第二种方法。

MinGW和MSVC

搜寻资料发现,当用MinGW编译时,会生成.dll文件和.a文件,而当用MSVC编译时,会生成.dll文件和.lib文件,这也就是为什么一开始我的release文件夹中没有找到.lib文件的原因。

  • 首先检查配置,打开Qt Creator-->工具-->选项-->构建-->Kits
  • 点击Compilers,查看是否有VS的MSVC版本
  • 点击Debuggers,查看是否有对应的Windows Kits

(因为VS我之前下载过,所以上面两个都自动检测到了,如果没有的话得自己下一个VS配个环境),

  • 点击Qt Version, 查看是否有MSVC的版本,发现没有,则接下来就去安装对应的组件

MaintenanceTool使用与镜像源

  • 打开MaintenanceTool.exe(通常在Qt安装目录下能够找到)
  • 推荐使用国内镜像源(不用也可以,但时常下载缓慢甚至出错):点击设置-->档案资料库-->用户定义的档案资料库-->添加-->粘贴镜像源的地址(可在download.qt.io/static/mirr... 里选择,我这里用的是中科大的)-->点击条件测试-->显示成功则没问题
  • 点下一步到选择组件,注意把Archive勾上然后筛选 ,完成后选择对应版本的Qt(如我的是Qt6.2.4),选择对应的MSVC组件,勾上后选择下一步,安装然后等待完成即可

编译链接

安装成功后,我们回到Qt Creator的Kits,在Qt Version中添加刚下载好的MSVC版本,然后在kits中配置好编译环境 接下来我们打开原来的自定义插件项目,执行对应的release编译即可生成MSVC版本的文件,这下在release文件夹里面能够看到.dll文件和.lib文件了。把.dll文件拷贝到Qt\Tools\QtCreator\bin\plugins\designer下,之后我们打开一个项目,打开Qt Designer就能看到并使用自定义的插件了。

但是这样项目还运行不起来,因为我们没有把lib库给这个项目,导致无法找到,接下来执行步骤:

  • 把.dll文件和.lib以及生成的.h文件拷贝到使用项目的目录中去,我们可以建一个目录命名为lib用来存放
  • 在Qt Creator中,右击项目选择添加库,然后按照说明选择刚才拷贝的.lib以及路径,点击确定
  • 最后右键项目run qmake一下然后执行编译即可成功构建项目并运行(这里需要注意的,是用release版本的库,那使用时就得也用release编译,这样才能链接上)
相关推荐
Wiktok31 分钟前
PySide6中的QSS(Qt Style Sheet,类似CSS)支持的属性
qt·pyside6·qss
枫叶丹437 分钟前
【Qt开发】Qt系统(七)-> Qt网络安全
c语言·开发语言·c++·qt·网络安全
草莓熊Lotso40 分钟前
Qt 控件核心入门:从基础认知到核心属性实战(含资源管理)
运维·开发语言·c++·人工智能·后端·qt·架构
EniacCheng9 小时前
Windows11 Qt MSVC配置
qt·msvc·调试·winmain
赵民勇12 小时前
Qt Q_CLASSINFO 宏详解
qt
_OP_CHEN15 小时前
【从零开始的Qt开发指南】(二十三)Qt 界面优化之 QSS 实战指南:从入门到精通,让你的界面颜值飙升!
开发语言·c++·qt·前端开发·界面美化·qss·客户端开发
lph00915 小时前
QtMqtt 的编译与QT环境加载配置
开发语言·qt
机器视觉知识推荐、就业指导16 小时前
Qt 小技巧:如何用 Q_PROPERTY 管理属性
服务器·数据库·qt
hqwest16 小时前
码上通QT实战11--监控页面03-绘制湿度盘和亮度盘
开发语言·qt·绘图·自定义组件·部件·qpainter·温度盘
起个名字费劲死了16 小时前
QT + Socket 客户端/服务端 公网通讯
服务器·c++·qt·socket