当前位置: 首页 > news >正文

棋牌 彩票网站建设wordpress升级

棋牌 彩票网站建设,wordpress升级,网站描述技巧,品牌注册要多久1.简介 Qt插件是一种扩展机制#xff0c;用于将应用程序的功能模块化#xff0c;并且可以在运行时动态加载和卸载。Qt框架为插件提供了一套标准的接口和管理机制#xff0c;使得插件的使用和集成变得简单和灵活#xff0c;通过插件机制#xff0c;可以将应用程序的功能划…1.简介 Qt插件是一种扩展机制用于将应用程序的功能模块化并且可以在运行时动态加载和卸载。Qt框架为插件提供了一套标准的接口和管理机制使得插件的使用和集成变得简单和灵活通过插件机制可以将应用程序的功能划分为独立的可插拔的模块使得应用程序更加可扩展和维护。 Qt插件系统具有以下特点 动态加载Qt插件是在运行时动态加载的允许在不重新编译或重新启动应用程序的情况下添加或移除插件。跨平台Qt插件系统可以在不同的平台上运行这意味着开发者可以使用相同的插件代码在Windows、macOS、Linux等多个操作系统上构建应用程序。松耦合通过使用插件系统应用程序可以以松耦合的方式使用插件。插件之间可以独立开发编译和测试然后在运行时动态加载到应用程序中。扩展性Qt插件系统允许开发者根据应用程序的需求来设计和实现插件接口。这样可以根据需要逐渐增加和扩展插件功能而不会对应用程序的其他部分产生影响。 2.插件和动态库的区别 功能和用途动态库是一种包含可执行代码和数据的库可以通过链接器将其与应用程序静态或动态地链接在一起。而Qt插件是一种特殊类型的动态库用于扩展和增强Qt应用程序的功能。API设计动态库一般是一个完整的功能模块可以直接调用其中的函数或使用其中的类。而Qt插件是基于插件接口或抽象类来设计的通过继承插件接口并实现其纯虚函数来扩展插件的功能。动态加载动态库通常需要在应用程序编译时与之链接并在运行时加载。而Qt插件则是在运行时动态加载可以根据需要添加或移除插件而无需重新编译或启动应用程序。插件管理Qt插件系统提供了更高级的插件管理功能包括插件的自动发现、元信息的提取和注册、插件之间的依赖管理等。这使得使用和管理插件变得更加简单和灵活。 程序运行时需要动态库否则运行不了而插件不需要在程序运行时动态加载。 3.如何创建插件 Qt提供了两个用于创建插件的API 一个高级API用于编写Qt本身的扩展自定义数据库驱动程序、图像格式、文本编解码器、自定义样式等。用于扩展Qt应用程序的低级API。 例如如果您想编写一个自定义的QStyle子类并让Qt应用程序动态加载它那么您可以使用更高级别的API。 编写一个扩展Qt本身的插件(高级API)是通过子类化适当的插件基类、实现一些函数和添加一个宏来实现的。 下表总结了插件基类Qt的版本不同插件会有些差别。  Base ClassDirectory NameQt ModuleKey Case Sensitivity QAccessibleBridgePlugin accessiblebridgeQt GUICase SensitiveQImageIOPluginimageformatsQt GUICase SensitiveQPictureFormatPlugin (obsolete)pictureformatsQt GUICase SensitiveQAudioSystemPluginaudioQt MultimediaCase InsensitiveQDeclarativeVideoBackendFactoryInterfacevideo/declarativevideobackendQt MultimediaCase InsensitiveQGstBufferPoolPluginvideo/bufferpoolQt MultimediaCase InsensitiveQMediaPlaylistIOPluginplaylistformatsQt MultimediaCase InsensitiveQMediaResourcePolicyPluginresourcepolicyQt MultimediaCase InsensitiveQMediaServiceProviderPluginmediaserviceQt MultimediaCase InsensitiveQSGVideoNodeFactoryPluginvideo/videonodeQt MultimediaCase InsensitiveQBearerEnginePluginbearerQt NetworkCase SensitiveQPlatformInputContextPluginplatforminputcontextsQt Platform AbstractionCase InsensitiveQPlatformIntegrationPluginplatformsQt Platform AbstractionCase Insensitive  QPlatformThemePluginplatformthemesQt Platform AbstractionCase InsensitiveQGeoPositionInfoSourceFactorypositionQt PositioningCase SensitiveQPlatformPrinterSupportPluginprintsupportQt Print SupportCase InsensitiveQSGContextPluginscenegraphQt QuickCase SensitiveQScriptExtensionPluginscriptQt ScriptCase SensitiveQSensorGesturePluginInterfacesensorgesturesQt SensorsCase SensitiveQSensorPluginInterfacesensorsQt SensorsCase SensitiveQSqlDriverPluginsqldriversQt SQLCase SensitiveQIconEnginePluginiconenginesQt SVGCase InsensitiveQAccessiblePluginaccessibleQt WidgetsCase SensitiveQStylePluginstylesQt Widgets Case Insensitive 创建Qt本身的扩展 如果你有一个名为MyStyle的新样式类你想让它作为插件使用那么这个类需要定义如下mystyleplugin.h //.h class MyStylePlugin : public QStylePlugin{Q_OBJECTQ_PLUGIN_METADATA(IID org.qt-project.Qt.QStyleFactoryInterface FILE mystyleplugin.json)public:QStyle *create(const QString key);};//.cpp#include mystyleplugin.hQStyle *MyStylePlugin::create(const QString key){if (key.toLower() mystyle)return new MyStyle;return 0;}QStylePlugin不区分大小写在我们的create实现中使用了小写版本大多数其他插件都是区分大小写的。 对于数据库驱动程序、图像格式、文本编解码器和大多数其他插件类型不需要显式的对象创建。Qt将根据需要查找并创建它们。style是个例外因为您可能希望在代码中显式地设置样式。要应用样式请使用以下代码。 QApplication::setStyle(QStyleFactory::create(MyStyle)); 创建扩展Qt应用程序 通过插件使应用程序可扩展包括以下步骤 定义一组用于与插件对话的接口仅具有纯虚拟函数的类。使用Q_DECLARE_INTERFACE宏告诉Qt的元对象系统有关接口的信息。在应用程序中使用QPluginLoader来加载插件。使用qobject_cast测试插件是否实现了给定的接口。 编写插件需要以下步骤 声明一个从QObject和插件想要提供的接口继承的插件类。使用Q_INTERFACES宏告诉Qt的元对象系统有关接口的信息。使用Q_plugin_METADATA宏导出插件。使用合适的.pro文件构建插件。 示例 声明一个抽象接口类。 #ifndef COMPUTEINTERFACE_H #define COMPUTEINTERFACE_H#include QtPlugin//定义接口 class ComputeInterface { public:virtual ~ComputeInterface() {}virtual int add(int a,int b) 0;virtual int sub(int a,int b) 0; };#define ComputeInterface_iid Test.Plugin.ComputeInterface // 唯一标识符QT_BEGIN_NAMESPACE Q_DECLARE_INTERFACE(ComputeInterface, ComputeInterface_iid) QT_END_NAMESPACE#endif // COMPUTEINTERFACE_H 定义实现该接口的插件类。 #ifndef COMPUTEPLUGIN_H #define COMPUTEPLUGIN_H#include QObject #include ../MainWidget/computeinterface.hclass ComputePlugin : public QObject, public ComputeInterface {Q_OBJECTQ_PLUGIN_METADATA(IID ComputeInterface_iid)Q_INTERFACES(ComputeInterface) public:explicit ComputePlugin(QObject *parent nullptr);virtual int add(int a,int b);virtual int sub(int a,int b); };#endif // COMPUTEPLUGIN_H#include computeplugin.hComputePlugin::ComputePlugin(QObject *parent): QObject(parent) {}int ComputePlugin::add(int a, int b) {return ab; }int ComputePlugin::sub(int a, int b) {return a-b; } 加载插件 //加载exe所在目录下 plugin文件夹的所有插件QDir path QDir(qApp-applicationDirPath());path.cd(../../plugins);foreach (QFileInfo info, path.entryInfoList(QDir::Files | QDir::NoDotAndDotDot)){QPluginLoader pluginLoader(info.absoluteFilePath());QObject *plugin pluginLoader.instance();if (plugin){ComputeInterface *app qobject_castComputeInterface*(plugin);if (app){int ret app-add(1,2);qDebug()ret ret;}}} 以下是工程目录结构 4.完整工程 https://download.csdn.net/download/wzz953200463/88495546
http://www.hkea.cn/news/14330841/

相关文章:

  • 网站备案包括空间内容吗网络热词2021流行语
  • 口碑好的福州网站建设wordpress漏洞框架
  • 朝阳区建网站公司有帮云永诚网络
  • 建个静态网站网页无法访问此页面怎么办?网页打不开怎么解决
  • 承德建设工程信息网站wordpress-cosy
  • 公司网站百度排名没有了提供网站建设方案ppt
  • 手机网站焦点图wordpress版权信息更换
  • 网站开发怎么连接sqlserver域名的价格
  • 餐饮食材配送网站开发企划书wordpress标签图片
  • 深圳私人网站优化wordpress表单
  • 网站服务费算什么费用义务教育标准化建设网站
  • 网站缩略图制作建设网站需要机房吗
  • 网站建设厘金手指排名二二网站建网站建设企业
  • 潍坊设计网站做网站设计用到的软件
  • wordpress改网站logo做外国网站用什么服务器
  • 手机网站建设+上海游戏网站建设杭州
  • 做网站如何选域名企业信息发布系统
  • 静态做网站网店托管代运营公司
  • 甘肃省环保建设申报网站ps软件入门教程
  • 大学选修课网站建设山西钢铁建设集团有限公司网站
  • godaddy域名买的网站热搜在哪里可以看
  • 做么网站有黄seo整体优化步骤怎么写
  • 网站集约化建设启示和建议免费网站管理系统
  • 网站建设全包公司推荐win7搭建wordpress
  • 重庆快速网站推广wordpress音乐主题pulse
  • 网销的网站建设与管理信用信息查询公示系统
  • 传统网站建设架构什么是百度快照
  • 怎样建设与维护自己的平台网站海南疾控发布问卷调查
  • 网站开发属于什么软件网站后台漏洞
  • 游戏交易网站开发公司建设网站需要什么条件