前言
最近在完成毕业设计时突发奇想,想在软件系统中运用类似于keil的可以把信息输出,文件树等控件摆放到自己想要的位置,在网上找了很多资料最终看到了github上的一个成熟的项目QtAds,在这里简单的介绍一下这个项目。
一、QtAds是什么?
根据QtAdsGitHub仓库中的介绍,Qt Advanced Docking System(Qt-ADS)是一个用于 Qt 应用程序的高级停靠系统。兼容Windows、macOS、Linux系统,支持Qt5和Qt6,可以用C++、Python进行编译开发。它允许开发者在应用程序中创建高度可定制和复杂的用户界面,可以自己选择组件的位置,就是类似于keil中可以把文件目录放到右边,信息输出放到上面这样。
二、使用步骤
1、下载
可以选择克隆QtAds仓库下载源码或者直接通过pip下载库
将源码克隆至本地,同样的也可以去仓库中直接下载源码的压缩包
git clone https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System
也可以选择直接在我的资源库QtAds(Qt-Advanced-Docking-System)高级停靠系统中下载,不过这样可能不是最新的版本。
另外,QtAds也可以用于PyQt5
和Pyside6
注意:PyQt5和Pyside6不要同时安装在同一环境下,两者之间存在兼容性问题,可能会导致运行时报错
PyQt5
版本的QtAds可以通过下面的命令安装:
pip install PyQtAds
Pyside6
版本的QtAds可以通过下面的命令安装:
pip install PySide6-QtAds
安装后可以直接使用import
调用
2、代码框架
因为QtAds原版是以C++编写的,Python是移植过去的,所以我们打开下载的官方例程文件夹可以看到整个项目的系统框架,
可以找到README文件了解如何使用,下面是整个文件夹的框架。
其中demo是官方提供的一个完整的示例,doc中包含着各种图片,examples里则包含各种用户功能的范例,可以在这些范例的基础上进行更改,src中存放着ads的模块功能代码。
在源码的文件夹中,选择ads.pro(即Qt工程文件)打开后需要重新选择项目的配置,选择本地的编译环境就行,点击Configure Project按钮,注意:如果要编译运行需要打开ads.pro的工程文件才能正确运行,因为模块功能代码存放在src文件夹中,也可以在项目中更改索引路径这里就不再详细描述了。
可以看到整个ads项目的结构,就如前面所说的一样,demo工程下分别有demo.pro(demo的Qt工程文件),ads.pri可以理解成一个类似于makefile的文件,用于配置Qt库头文件等,Headers存放着所需要的头文件,Sources文件夹中存放着项目驱动的源码,Forms则存放ui文件也就是显示的界面,Resources文件夹中则包含着项目所需的各种资源,如图片、音频等。
3、使用
C++
需要电脑中带有Qt以及相关控件,打开ads.pro(Qt项目文件)点击编译后运行就会显示出系统的界面。
可以实现拖拽组件、布局保存、创建组件等操作。
Python
如果是Python环境下使用,建议创建一个虚拟环境,这样可以有效地隔离项目所需的依赖库,避免不同项目之间的冲突。我用的是Anaconda,相关安装教程可以自行搜索。
因为Python版本的只移植了示例部分,部分功能可能还未完全移植,这里建议直接使用C++的版本。
Python版本的例程代码在example文件夹下,打开main.py
文件运行,有部分示例是没有Python版本的。
直接从仓库下载的是使用PyQt5的,Pyside6版本需要去此处下载
运行时PyQt5的版本代码如果遇到下面的报错
DeprecationWarning: sipPyTypeDict() is deprecated, the extension module should use sipPyTypeDictRef() instead
可以参考[Question ]: DeprecationWarning: sipPyTypeDict() is deprecated.得知是sip版本更新后不兼容,把pyqt5-sip降级后就不会警告了
pip install pyqt5-sip==5.12.2
Pyside6的使用方法也是差不多的,这里就不再多阐述了。
参考
Qt-Advanced-Docking-System
Qt 项目文件Pri详解
总结
本人也只是初窥门道,对于在Python环境下如何监控组件的关闭信号并作出响应的操作还不是非常清楚,希望各位大佬能多加指点。感谢大家的观看!