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

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

问题描述

Qt自定义的widget插件无法在Designer中显示
没有显示.png
首先检查自己项目文件夹中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版本

Compilers

  • 点击Debuggers,查看是否有对应的Windows Kits

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

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

Qt Version

MaintenanceTool使用与镜像源

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

编译链接

安装成功后,我们回到Qt Creator的Kits,在Qt Version中添加刚下载好的MSVC版本,然后在kits中配置好编译环境
配置MSVC
接下来我们打开原来的自定义插件项目,执行对应的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编译,这样才能链接上)
  • 28
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值