设计和使用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编译,这样才能链接上)
相关推荐
SuperYang_2 小时前
使用qt creator配置msvc环境(不需要安装shit一样的宇宙第一IDE vs的哈)
ide·qt·msvc·环境搭建·winsdksetup
剑海风云2 小时前
GraalVM简介及使用
java·jvm·graalvm·编译器·本地镜像
国中之林12 小时前
【qt】如何获取本机的IP地址?
服务器·qt·网络协议·学习·tcp/ip
誰能久伴不乏13 小时前
Qt 绘图详解
开发语言·c++·qt
Logintern0913 小时前
PyQt5中如何实现指示灯点亮和指示灯熄灭功能
开发语言·python·qt
paidaxing_s15 小时前
【QT中堆栈布局的实现】
开发语言·qt·命令模式
科学的发展-只不过是读大自然写的代码17 小时前
qt 开发笔记堆栈布局的应用
笔记·qt·堆栈布局
春蕾夏荷_72829772517 小时前
vs+qt5.0 使用poppler-qt5 操作库获取pdf所有文本输出到txt操作
qt·pdf·poppler-qt5·poppler
从后端到QT17 小时前
Qt 网络编程 网络信息获取操作
开发语言·网络·qt
Hey小孩18 小时前
09.QT控件:按钮类控件
qt