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

  • 相关阅读:
    【服务器数据恢复】Zfs文件系统误删除数据的数据恢复案例
    SpringCloud的新闻资讯项目10 --- xxl-Job分布式任务调度
    为什么建议你做自动化邮件营销?
    MySQL中将传参表名字符串转为sql语句执行
    分布式事务理论
    Docker,安装部署Nginx
    爱奇艺 Opal 机器学习平台:特征中心建设实践
    Yuan 2.0-M32 是一个基于 Yuan 2.0 架构的双语混合专家 (MoE) 语言模型,旨在以更少的参数和计算量实现更高的准确率
    Python图形界面框架PyQt5使用详解
    代码随想录算法训练营Day32 | 贪心算法(2/6) Leetcode 122.买卖股票的最佳时机 II 55. 跳跃游戏 45.跳跃游戏II
  • 原文地址:https://blog.csdn.net/sdfgjhdgh/article/details/125472098