- 1、本文档共53页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《QT插件建立》.doc
详解如何建立Qt插件学习教程
如何建立Qt插件学习教程是本文要介绍的内容,主要是来了解QT中插件的应用,如何来建立,文中有详解,具体内容的实现来看详解。
QT提供2个API来建立插件
1、高层API扩展QT库。例如定制的数据库驱动,图像格式,字符编码,custom styles
2、底层API扩展QT应用程序
例如,如果想写自定义QStyle的子类,并让应用程序动态加载,需要使用高层API函数
因为高层API在底层API基础上构造,两者需要注意一些问题。
如果需要提供给QT Designeder插件,请参考QtDesigner模型文档
高层API
利用继承特定的基类来实现插件,需要实现其中的一些函数,并增加一个宏
QT中有不少插件的基类可供使用,继承的插件默认保存在标准插件目录的子目录下,否则Qt会找不到。
设计一个style类名为MyStyle的插件
文件mystyleplugin.h:
class?MyStylePlugin?:?public?QStylePlugin ?
{ ?
public: ?
QStringList?keys()?const;????//返回此插件能够使用的style名称列表。 ?
QStyle?*create(const?QString?key);//根据传入的style名称,返回style。 ?
}; ?
?
mystyleplugin.cpp ?
#include?mystyleplugin.h ?
?
QStringList?MyStylePlugin::keys()?const ?
{ ?
return?QStringList()??MyStyle; ?
} ?
?
QStyle?*MyStylePlugin::create(const?QString?key) ?
{ ?
if?(key.toLower()?==?mystyle) ?
return?new?MyStyle; ?
return?0; ?
} ?
?
Q_EXPORT_PLUGIN2(pnp_mystyleplugin,?MyStylePlugin)?
风格实现
文件mystyle.h:
class?MyStyle?:?public?QWindowsStyle ?
{ ?
Q_OBJECT ?
?
public: ?
MyStyle()?{}; ?
?
void?polish(QPalette?palette); ?
};?
继承自QWindowsStyle
风格实现
void?MyStyle::polish(QPalette?palette) ?
{ ?
palette.setBrush(QPalette::Button,?Qt::red); ?
}?
(注意其中实现的大小写方式)。
实现数据库驱动,图像格式、文本编码和大多数其他插件类型时,一般不需要建立对象,Qt会找到他们并建立他们的对象。Style是一个特例,因为程序中科能会这样调用:
QApplication::setStyle(QStyleFactory::create(MyStyle));?
main.c文件:
int?main(int?argv,?char?*args[]) ?
{ ?
QApplication?app(argv,?args);//QT此时加载了插件 ?
QApplication::setStyle(QStyleFactory::create(simplestyle)); ?
?
StyleWindow?window; ?
window.resize(200,?50); ?
window.show(); ?
?
return?app.exec(); ?
}?
TEMPLATE????=?lib?
CONFIG?????+=?plugin ?
HEADERS?????=?simplestyle.h?\ ?
simplestyleplugin.h ?
SOURCES?????=?simplestyle.cpp?\ ?
simplestyleplugin.cpp ?
TARGET??????=?simplestyleplugin?
注意,插件需要设置TEMPLATE,因为我们需要的是共享库而不是执行程序。同时必须设置CONFIG。需要将此插件保存到style文件夹(应用程序所在的文件夹)。这样应用程序就能够检测得到。
底层API:没有详细研究
不管是QT本身还是QT应用程序都可以通过插件扩展。这需要应用程序检测并通过QPluginLoader进行加载。因此,插件可以提供任意功能,而不仅限于上面说的插件。
插件扩展应用包括4个步骤
1、定义插件的接口集(实际上是只有虚函数的一个类)
2、Q_DECLARE_INTERFACE宏告诉meta-object
您可能关注的文档
- 《led专业电源测试方法》.ppt
- 《LED电源测试技术及仿真负载介绍》.pdf
- 《LED电源驱动器测试解决方案》.pdf
- 《Lightroom人像美化插件 让作品达到专业水平》.doc
- 《Linux-网络性能测试工具》.pdf
- 《Linux下插件开发应用案例》.doc
- 《Linux操作系统教程02》.doc
- 《Linux操作系统案例教程电子教案_第3章_文件管理》.ppt
- 《LIXIAOGUANG客户端功能测试培训》.pptx
- 《LMS Test.Lab中文操作指南_Signature信号特征测试分析》.pdf
- 中国国家标准 GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- 《GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计》.pdf
- 中国国家标准 GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- 《GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置》.pdf
- 中国国家标准 GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- GB/T 17889.4-2024梯子 第4部分:铰链梯.pdf
- 《GB/T 17889.4-2024梯子 第4部分:铰链梯》.pdf
文档评论(0)