• 优麒麟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的官方插件的名字,里边有很多个插件的实现,可以对照着实现自己的插件

  • 相关阅读:
    uniapp项目实践总结(二十一)日常开发方法汇总
    OpenCV-Java 开发简介
    [Js进阶]bind、call、apply三个方法
    Linux下最新版MySQL 8.0的下载与安装(详细步骤)
    Mysql的定时备份与恢复
    【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(8 月 31 日论文合集)
    linux权限管理之SetUID&SetGID
    车载通信架构 —— 新车载总线类型下(以太网)的通信架构
    Flutter入门到精通:学习路线与思路
    诊所要使用微信预约系统,需准备哪些资料?
  • 原文地址:https://blog.csdn.net/sdfgjhdgh/article/details/125472098