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

 

点击上方蓝字可关注公众号,方便下次阅读。

本篇文章只能回答一半,如何创建扩展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的插件机制进行解耦。加载插件的宿主程序不关心插件的业务逻辑,只需按照对应接口调用即可;插件开发者可自己测试写的插件,方便维护。

欢迎关注公众号,方便下次阅读~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值