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

QT6 Creator编译KDDockWidgets并部署到QT

为什么使用KDDockWidgets

为什么使用KDDockWidgets呢?
首先它是一个优秀的开源dock库,弥补QDockWidget的不足,详情见官网。
其次它支持QML,这是我最终选择这个dock库的主要原因,因为最近在考虑将前端界面用QML做,后台用c++。考虑到之前的项目用到了另一个开源dock库Qt-Advanced-Docking-System,需要找一个可以在QML使用的替代库,所以找上了它。就风格而言我更喜欢Qt-Advanced-Docking-System这个库。来几张截图看看
在这里插入图片描述
在这里插入图片描述
KDDockWidgets的截图,感受下,这个动图不太清晰,它这些图标只能说丑爆了,好在KDDockWidgets支持重写,后面再详细介绍。
在这里插入图片描述

编译源码

下面步入正题,源码编译,开整!

1 源码下载

先从GitHub上下载最新源码,https://github.com/KDAB/KDDockWidgets

2.0以后的版本才支持QML

直接下载zip压缩包在这里插入图片描述
,当然你喜欢clone也行,随意。
在这里插入图片描述

2 编译准备

如果未进行这步,将会报一堆错误,这块是最疼苦的,说实话,虽然把它的编译环境准备好了,但也是有点懵的,每个人的电脑环境不一样,完全按照我说的也未必在你的电脑上通过,这块随缘吧,但是还是有些必要的环境要配的。

本人不熟悉CMake,而这个库又只能CMake编译,试了用cmd cmake,cmake gui,折腾一天也没倒腾出来,最终放弃,选择自己熟悉的QT Creator来搞。

基本的软件需要先安装:
  • cmake
  • ninja
  • qt
  • vs

其中cmake和ninja不用特意安装,QT6会自动安装。
其中QtQuick 支持需要Qt >= 5.15,我本身的QT环境为QT6.5.3.配合的vs版本是vs2019.

环境变量

这步最关键,在path中将qt,vs,cmake和ninja,安装路径根据实际情况更改
在这里插入图片描述

在这里插入图片描述
配置完后,要确保环境变量生效,有不重启的方法,懒得折腾,直接重启。

3 开始编译

解压源码后,用QT Creator打开项目代码。
在这里插入图片描述
眼花缭乱的编译环境,我们选择第一个,会报错,
在这里插入图片描述
先不管,先把这些临时的构建kit都删了,其实不删也没影响,看着不舒服。在这里插入图片描述
下面来解决报错问题,cmake报错,整个项目是灰色的
在这里插入图片描述
双击第一个报错,在cmake文件中,ENABLED_FRONTENDS未被置true,查找上下文发现,引起这个问题的主要原因是未找到QT环境。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们的环境是QT6,默认启用QT5,需要把这个变量设置一下,QT Creator在构建设置中提供了CMake关键变量查询和设置的功能,和CMake gui类似,添加KDDockWidgets_QT6,然后勾选上,点击下部的执行CMake

注意变量名称不是DKDDockWidgets_QT6

在这里插入图片描述
执行完CMake后,会出现
在这里插入图片描述
工程树也正常了
在这里插入图片描述
直接编译,没问题,example里的例程也都可以打开,学习代码,参看事例都没问题,作为动态库被使用也可以了。但是有些不方便,一是需要的dll,lib在build里比较散乱,而且也没有完整的include文件,需要直接把源码放到作为动态库的include里或者手动把需要的头文件挑出来。
简单新建个QML工程试试就知道了,把编译完的lib和dll放到测试工程的lib下,把源码拷贝到inc里,
在这里插入图片描述

在这里插入图片描述
配置pro文件
在这里插入图片描述

随便将源码例程的一段代码移植过来,比如customtabbar的代码,
在这里插入图片描述

编译,运行
在这里插入图片描述

需要注意的是在pro文件里需要加上DEFINES += KDDW_FRONTEND_QT。
不然头文件引用报错,kddockwidgets_export.h这个文件是编译生成的文件,直接在源码是找不到的,具体可看看CMakeList文件。
在这里插入图片描述

部属到QT环境

下面解锁正确玩法,即将这个库配置到QT。需要提前准备。
切回构建,将构建步骤里的install勾选上,debug和release需要分别勾选。然后构建工程。
在这里插入图片描述
经过几分钟的构建,(第一遍的时候就怕出现和cmake gui一样的一堆问题),煎熬一会后,成功编译。默认安装路径为C:\Program Files (x86)\KDDockWidgets
在这里插入图片描述

如果不是以管理员打开QT Creator,可能出现无法创建路径的错误,
在这里插入图片描述
至此,编译完成。在目标路径生成如下文件
在这里插入图片描述

熟悉QT的人看到上图应该不陌生,典型的QT环境结构,share是doc,这里没什么用,直接拷贝到QT下,不用担心内部路径结构,都是按QT的结构生成的。
在这里插入图片描述
还有些小瑕疵,继续上边的测试程序,更改pro文件,编译报错
在这里插入图片描述
查看D:\program\QT\6.5.3\msvc2019_64\mkspecs\modules下的qt_KDDockWidgets.pri
在这里插入图片描述
发现库名称为kddockwidgets-qt6
在这里插入图片描述
而我们编译生成的库名称是kddockwidgets-qt62.lib
在这里插入图片描述
将pri文件qt_KDDockWidgets.pri修改一下。重启QT,再次编译,库引用问题已经没了,但出现了头文件引用错误
在这里插入图片描述
这个也很容易找到问题,对比qt_KDDockWidgets.pri文件的includes和实际路径,多了一个kddockwidgets-qt6。
在这里插入图片描述
在这里插入图片描述
两个解决方法:
1 引用头文件时,多加一个kddockwidgets-qt6前缀;
2 修改qt_KDDockWidgets.pri的includes,在其后追加kddockwidgets-qt6,重启QT
在这里插入图片描述
编译,也没问题,运行
在这里插入图片描述

结语

看似过程很简单,如果自己从头来一遍,可能会遇到各种问题,最麻烦的莫过于配置环境变量,这是基础,这里不过后面的都免谈。

虽然过程坎坷,但最终还是搞定了。

下一步就是前面提到的重写它的样式了,图标太丑了。后面有时间会把重写样式再分享一下,不过那个就相对简单了。


http://www.kler.cn/a/149271.html

相关文章:

  • Springboot配置全局异常通用返回
  • 阿里云centos7.9服务器磁盘挂载,切换服务路径
  • 【HarmonyOS NEXT】一次开发多端部署(以轮播图、Tab栏、列表为例,配合栅格布局与媒体查询,进行 UI 的一多开发)
  • 编写红绿起爆线指标(附带源码下载)
  • OpenGL ES 共享上下文实现多线程渲染
  • Jmeter性能测试 -3数据驱动实战
  • C#通过NPOI 读、写Excel数据;合并单元格、简单样式修改;通过读取已有的Excel模板另存为文件
  • SP3109 STRLCP - Longest Common Prefix 题解
  • 0基础学习VR全景平台篇第123篇:VR视频航拍补天 - PR软件教程
  • 前端---CSS篇(详解CSS)
  • 微服务--03--OpenFeign 实现远程调用 (负载均衡组件SpringCloudLoadBalancer)
  • 【 Kubernetes 风云录 】- Istio 应用多版本流量控制
  • 【古月居《ros入门21讲》学习笔记】17_launch启动文件的使用方法
  • dockerfile指令学习
  • ubuntu改window任务栏
  • Leetcode—2336.无限集中的最小数字【中等】
  • 随笔(持续更新)
  • SELinux零知识学习三十七、SELinux策略语言之约束(1)
  • 2023年合肥市瑶海区某校校赛真题(小学组)
  • 图书管理系统源码,图书管理系统开发,图书借阅系统源码整体功能演示
  • MySQL(主从复制)
  • C语言数据结构之顺序表(上)
  • VT-VSPA1-1X比例压力阀控制板
  • Roll-A-Ball 游戏
  • fastadmin学习笔记-----动态下拉框
  • PWM 正玄波形 通过C语言生成