首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt插件入门——使用插件扩展Qt自身

Qt插件入门——使用插件扩展Qt自身

作者头像
用户5908113
发布2019-12-19 14:57:39
2.2K0
发布2019-12-19 14:57:39
举报
文章被收录于专栏:Pou光明Pou光明

本篇文章只能回答一半,如何创建扩展Qt自身的插件。

Qt提供了两种用于创建插件的API:

用于编写Qt自身扩展的高级API:自定义数据库驱动程序,图像格式,文本编解码器,自定义样式等。本次的例子就是自定义样式的例子。

用于扩展Qt应用程序的低级API。下次介绍。

例如,如果您要编写自定义QStyle子类并让Qt应用程序动态加载它,则可以使用更高级别的API。由于较高级别的API建立在较低级别的API之上,因此两者都有一些共同的问题。

高级API:扩展 Qt自身,编写扩展Qt本身的插件是通过将适当的插件基类继承为子类,实现一些功能并添加宏来实现的。

Qt官方文档:https://doc.qt.io/qt-5/plugins-howto.html

程序环境:Ubuntu 14.04、 Qt5.5.1

使用Qt自带的例子方便入门。Qt5.5.1自带的例子无法运行出红色按钮的效果,所以做了微小改动。

1、打开Qt自带的工程

打开Qt Creator后,默认在【Welcome】选项,之后选择【Examples】,搜索【sty】,选择红色按钮那个。

2. 插件工程简介

SimpleStylePlugin类需继承父类QStylePlugin,并按照对应规则的接口进行实现,QStylePlugin类插件基类中的一个,属于样式基类。

在SimpleStylePlugin中create了 SimpleStyle,也就是我们自己要实现的样式。

SimpleStyle继承了QProxyStyle,重新实现了polish()。

void SimpleStyle::polish(QPalette &palette)

{

// palette.setColor(QPalette::Button, Qt::red); //无法运行出红色按钮的效果

palette = QPalette(QPalette::Button, Qt::blue);

}

3. 主程序简介

主程序中创建了窗口部件,这部分我们无需主要注意。我们要关注的是在主程序中如何使用我们新的样式。

QApplication::setStyle(QStyleFactory::create("simplestyle"));

4. 程序运行效果

插件生成路径:

5. 让其他工程使用自定义样式

将我们生成的插件拷贝到下面目录,Qr Designer在运行时会自动查找插件,如果找到插件则会自动加载。

下面是一个测试效果。此时无需我们再主程序中调用QApplication::setStyle(QStyleFactory::create("simplestyle")),样式也会自动被改变。

6、总结

主要就是运行了Qt自带的例子,方便初学者结合Qt自带的文档进行理解。

Qt的插件也可以理解为一种动态库,只不过只能是使用Qt来进行加载。

使用Qt开发的大型程序可以通过Qt的插件机制进行解耦。加载插件的宿主程序不关心插件的业务逻辑,只需按照对应接口调用即可;插件开发者可自己测试写的插件,方便维护。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Pou光明 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档