可以通过自定义控件的方式来将一个自定义控件整体放置在需要的位置。
步骤如下:
1.qt中添加一个新类
2.在要提升的界面对其进行提升选项的增加
3.进行提升,然后对应的对象就可以直接作为一个新类使用
4.直接编译运行即可
Qt设计师界面类,不过这个类要和该项目中的类一样,从而达到覆盖初始项目的.h .cpp源文件的目的。将生成的插件动态库放置在Qt designer的插件动态库路径下,只是可以在Qt Designer中显示并拖拽对应的控件。这样是无法通过编译的,他还需要将对应的库以及头文件添加在当前项目,才可以通过整个的编译过程:
使用过程如下:
INCLUDEPATH += /home/i/controlers/test.h # 这个是插件文件的头文件
LIBS += /home/i/controlers/so/libtestplugin.so # 生成的动态库
Qt Designer插件路径下,这样每次更新就不需要复制粘贴等操作,直接使用即可。Q_PROPERTY(int m_intVal READ get_intVal WRITE set_intVal)用于声明控件属性,然后就可以在Qt Designer的右侧属性栏中查看到对应的设置接口;Q_PROPERTY宏只是声明了控件属性,具体的变量和函数接口都需要进行实现。
另外Qt Designer相当于一个界面显示的模拟器,在设置属性后即可动态的看到对应的界面变化。
增加插件后,如果出现打开ui界面编写文件就Qt Creater崩溃的话,可以从以下角度入手处理问题:
public类型中,再重新编译插件文件。不同项目的扩展只需要在创建时指定自定义插件类型的说明栏中的组属性为目标组即可,同组的自定义插件在Qt Designer中就是显示在一个区域中:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GTyew7zh-1669469281171)(./images/DesginerPluginGroup.png)]
相同项目下直接扩展插件的方式,这个和Qt版本有很大关系,比较核心的就是Q_EXPORT_PLUGIN2(test2plugin, Test2)宏,这个宏一般声明的就是插件类型。相同自定义插件项目要参考对应Qt版本默认的实现方式,可以直接手动新建一个包含多个插件的项目,然后参考进行实现。
虽然实现的逻辑可能不太一样,但是整体上就是以下几个文件:
.h
.cpp
.pri
plugin.h
plugin.cpp
想要扩展的话,首先创建一个自定义控件项目,得到一份默认的自定义插件代码,然后将这些代码文件复制到目标项目中(pro文件管理项目)。之后修改新增插件的相关代码即可,修改这部分主要从下面几个方面入手:
编译自定义控件的Qt版本 和 编译Qt Creater的Qt版本要一致,否则就会出现编译出来的自定义控件在Qt designer的控件列表上无法显示。查询Qt Creator版本
graph LR
帮助 --> 关于Qt Creator
其中有一个基于Qt的版本号,这是Qt Creator所编译用的Qt库版本version1
qmake -v
此命令可以查询目前所使用的qmake版本,以及Qt库,或者到工具->选项->构建和运行->Qt版本 设置Qt版本version2;
在Qt Creator中,到页面编辑器中之后,工具->页面编辑器->关于Qt设计师插件 可以或者Qt的插件信息,包括未加载成功原因,每次添加完插件之后到此处刷新即可
在下载新的Qt版本的时候,要下载.tar.gz类似的包,不要下载zip的,zip是给windows用的。