• 优麒麟2204文件管理器peony扩展初开发


    这次突发奇想,想给peony写个插件用来扩展一些文件属性的东西,在gitee上和开发讨论了一下,是可以实现的,我就把peony的代码拉了下来,开发建议我参考一下peony-share的代码,peony的代码里也有一些扩展或者说是插件的代码,但是目前的测试来看是不能使用(过期了),总的来说是这样的。

    peony提供了,文件系统,工具栏,文件属性页,菜单,视图,预览,风格等插件的接口,还有一个我不知道是用来做什么的,看起来像是和文件图标有关联,我这次是用文件属性页的插件接口做的demo。

    具体实现是要继承properties-window-tab-page-plugin-iface.h头文件里声明PropertiesWindowTabPagePluginIface类的接口,然后具体的调用或者是说显示需要继承properties-window-tab-iface.h里的Peony::PropertiesWindowTabIface,然后在properties-window-tab-page-plugin-iface.h的createTabPage里返回继承了Peony::PropertiesWindowTabIface类的插件主体的实例,我的理解是properties-window-tab-page-plugin-iface.h是告诉peony这是一个插件,然后在继承了Peony::PropertiesWindowTabIface的类里实现自己需要的方法,返回给peony去渲染。

    整个Peony::PropertiesWindowTabIface里的方法很少,基本只有一个页面改变和保存的方法。

    PropertiesWindowTabPagePluginIface里的东西不多,tabOrder应该是整个tab的排序,supportUri时候控制是否显示的true是显示,false是不显示,createPage则是具体的内容显示,之前的demo里写的返回类型是QWidget,现在改成PropertiesWindowTabIface应该是考虑到QWidget类型可能不太灵活,所以做成现在这样。

    首先使用qtcreator建立一个新的项目,然后类型选择lib,在项目的pro文件CONFIG里加上plugin(必须),这样可以让生成的so库文件不带版本,方便拷贝,在实现PropertiesWindowTabPagePluginIface的时候需要用

    Q_PLUGIN_METADATA(IID PropertiesWindowTabPagePluginIface_iid FILE "common.json")

    这句来声明插件匹配的peony版本,common.json是一个json内容的文件,文件名字应该是可以自定义的,目前文件里只有一个字段,就是version,内容是需要和自己本机的peony定义的宏VERSION匹配,但是这个宏是在pri文件里写的,没有在头文件里,最简单的就是看关于页面的版本,这个就是直接返回的VERSION这个定义。

    两个类都写好以后就可以直接构建生成so文件,然后放到/usr/lib/x86_64-linux-gnu/peony-extensions里就可以,重新加载只需要关闭peony的进程再打开就可以,简单的说就是关闭文件管理器再打开就会重新加载库文件。

    因为不太会qt所以有些说法可能不太标准,可以参考peony-share的实现,项目目前的名字是peony-extensions,这个是peony的官方插件的名字,里边有很多个插件的实现,可以对照着实现自己的插件

  • 相关阅读:
    训练人工智能机器人的软实力
    将Abp移植进.NET MAUI项目(一):搭建项目
    R语言 | 数据框
    基于Java的家政公司服务平台设计与实现(源码+lw+部署文档+讲解等)
    从阿里、头条面试回来,面试官最喜欢问的 Jvm 和 Redis 你了解多少?
    知识图谱丨知识图谱赋能企业数字化转型
    华钜同创:亚马逊卖家培训如何追溯流量变化
    蓝桥杯练习题三 - 纸牌三角形(c++)
    windows MYSQL安装与卸载
    彻底理解装饰模式
  • 原文地址:https://blog.csdn.net/sdfgjhdgh/article/details/125472098