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

做报名网站内部劵淘网站怎么做

做报名网站,内部劵淘网站怎么做,网站开发完了备案,企业网站空间多大Qt Quick的插件方法 序言环境前置注意概念——Qt Quick插件的相关知识插件里的qml文件模块名的相关知识模块名本身注意事项模块名版本注意事项 以示例来说明创建插件qmltypes的生成qmltypes的可能性失效 插件的编码注意1、插件模块版本控制2、pro里的注意 调用插件插件信息输入… Qt Quick的插件方法 序言环境前置注意概念——Qt Quick插件的相关知识插件里的qml文件模块名的相关知识模块名本身注意事项模块名版本注意事项 以示例来说明创建插件qmltypes的生成qmltypes的可能性失效 插件的编码注意1、插件模块版本控制2、pro里的注意 调用插件插件信息输入 序言 网上有很多的Qt Quick扩展插件方法比如龚建波或者诺谦的确实是教了怎么做可是还是按着做时还是出现了一些问题有些细节上的理解容易与作者想的不一样对于新手不太友好不够简单和全面起码我看着没有第一时间弄出来还花了不少时间研究才最终弄出来。 因此我作为更新手的视角也来写一下插件的用法以供学习的人分别参考。 如果有兴趣我后面也可以出C的插件方法不过感觉资料很多没什么必要。 环境 Qt5.15(MSVC2019) VS2019 前置注意 示例插件名 TestQmlPlugin 模块名QmlEditorStyle 插件库名TestQmlPlugin 概念——Qt Quick插件的相关知识 Qt的插件有一个很大的特点就是不需要lib文件只需要dll文件就可以进行动态装载。 如果是C会需要QPluginLoader进行加载不过其实也是用的QLibrary。 QML不需要自己来加载因为Engine已经负责了这个加载任务。 不过相对的Qt Quick也需要一些信息比如插件的外接接口的信息我们提供的就是一个名为qmldir 的文件无.txt.pri那些后缀就叫qmldir 关于qmldir里面该怎么写Qt的助手就已经有相关说明 具体有什么可以自行翻找查阅但是qmldir最起码需要两条信息也是我演示用的其中两条 一个交代了QML的import时的模块名另一个交代了插件库的库名。 举例 qmldir文件里只有两行信息 module QmlEditorStyle plugin TestQmlPlugin而其分别影响的是 module QmlEditorStyle - import QmlEditorStyle 1.0. plugin TestQmlPlugin - TestQmlPlugin.dll TestQmlPlugind.dll . 插件里的qml文件 有些人会想将QML文件放进插件里这样调用的时候就可以拿着dll随便用了。 可惜实现不了。 插件本质上是一种特殊的动态库动态库你我都懂如果需要调用动态库里面的类就需要提供一些接口.h文件。 然后编码时才可以自由访问提供的接口类。 同理你要调用QML文件就必须要有接口可怎么提供接口呢QML文件就没有分什么.h文件.cpp文件它是解释型语言就算用插件你也需要提供源码才可以。 除非你用C实现QML的项然后封装进插件里再放出.h文件即可。(因为QML的项本质上是QtC的实现而来的。) 将自己封装好的QML文件放在插件库文件夹里即下文会提到的QmlEditorStyle文件夹里。 再将qmldir文件夹的末尾加上资源标识符 注册的版本 对应文件 其对应的就是 qmlRegisterTypeMySliderItem(QmlEditorStyle, 1, 0, Slider);ResourceIdentifier对应的是Slider注册的QML类型 InitialVersion对应的是1, 0C是1逗号0qmldir是1点0 File对应的是MySliderItem实际的QML文件C的是实际的C类 module QmlEditorStyle ... Slider 1.0 MySliderItem.qml不过一般都会文件和类型名一致。 这样就算是将QML文件放进插件库里了当调用该文件夹的插件时也会囊括QML文件了。 模块名的相关知识 Qt Quick的import模块名值得注意的是其代表的其实是文件夹名什么意思呢 比如说QtQuick.Window 2.15这个import的模块实际代表的是QtQuick文件夹里的Window.2文件夹 Creator会根据这个从路径信息里找到对应的文件夹找到对应的plugins.qmltypes文件和qmldir文件进而读取进来。 模块名本身注意事项 有的人可能要自己定义一个插件库比如说[公司名].[库名] 然后就打算这样命名文件夹Company.TestQmlPlugin 这样是行不通的Creator会找不到插件库的你得改成 Company文件夹里放TestQmlPlugin文件夹 模块名版本注意事项 那么如果说我们导入示例插件TestQmlPlugin呢 比如说import TestQmlPlugin 1.0 就直接是TestQmlPlugin文件夹里放就行后面的.1可加可不加没有会默认按.1处理 如果是import TestQmlPlugin 2.0 就需要命名为TestQmlPlugin.2文件夹这个不能缺少后面的.2。 . 另外还需要一个文件plugins.qmltypes其提供给Creator提示信息是由我们用qmlplugindump生成的或者qmake的里面设置一些东西可以自动生成。 基本这些加上库文件就组成了一个插件。 以示例来说明 创建插件 按选择创建插件的这个工程名与提供出来的插件名不影响 选择qmake还是cmake进行编译Qt6只运行用cmake如果用QML以后考虑用Qt6的就选择cmake。 但是呢这里现在暂时只讲解qmake方法cmake待后续添加。 接下来选择一些基本信息如最低Qt版本这些URI的com.mycompany.qmlcomponents可以改为我们示例用的模块名QmlEditorStyle或者你打算设置的模块名。 . . 如此就生成了初始的插件 进行构建就可以生成debug版本或者release版本这些的dll了。 不需要在意debug版本dll名是否会因为有个d后缀而影响的问题Qt在读取的时候会自动判断的了。 将构建好的dll和qmldir放进由模块名为文件夹名的文件夹里。 qmltypes的生成 在该文件夹的上一级用cmd输入 qmlplugindump QmlEditorStyle 1.1 . .\QmlEditorStyle\plugins.qmltypes其的输入规则是 qmlplugindump空格[模块名]空格[版本]空格[模块所在目录]空格 空格[要生成的路径] 需要注意的是[模块所在目录]是指以模块名为文件夹名的文件夹所在目录即QmlEditorStyle文件夹。 生成之后会在模块文件夹里即QmlEditorStyle生成一个plugins.qmltypes是qmlplugindump根据插件里注册的内容生成的信息。 qmltypes的可能性失效 1、生成了plugins.qmltypes可能是缺少信息的也可能是我指令有误之类的吧但是参考别人的也都是相同的。 注意上方的exports这行信息在每个MyItem的左边需要加上模块名QmlEditorStyle/MyItem 1.1 这样才能生效 2、如果上方加上了模块名仍然Creator提示无效则在qmldir里新增一行 typeinfo plugins.qmltypes不过一般来说加不加不影响 3、如果上边的都弄了之后发现在导入的地方存在一个错误提示 Error 1:1 预计符号numeric literal 这是编码问题我遇到了发现plugins.qmltypes是utf-16格式的于是我转成了utf-8格式的就正常了 . 插件的编码注意 1、插件模块版本控制 Qt Quick的模块版本是由注册到该版本的项决定是否存在的。 什么意思呢 testqmlplugin_plugin.cpp里有个代码 void TestQmlPluginPlugin::registerTypes(const char *uri) {qmlRegisterTypeMyItem(uri, 1, 0, MyItem); }uri代表的是会传入你编写的模块名比如说该示例是QmlEditorStyleuri也是这个值。 第二个参数是主版本号第三个参数是次版本号。 就是import QmlEditorStyle 1.0里的1是主版本号0是次版本号。 这样将MyItem注册在了1.0这个模块里1.0就存在了一个MyItem的项。 你如果后面都弄好后平白无故去导入1.1模块也是不存在的会提示不存在这个模块因为里面不包含任何项。 2、pro里的注意 TEMPLATE lib TARGET TestQmlPlugin // 插件的dll名称 QT qml quick CONFIG plugin c11TARGET $$qtLibraryTarget($$TARGET) uri QmlEditorStyle // 代表着模块名一般用不上此处如果额外增加下列代码 CONFIG qmltypes #自动生成 plugins.qmltypes QML_IMPORT_NAME TestQmlPlugin QML_IMPORT_MAJOR_VERSION 1就会自动在构建之后产生一个plugins.qmltypes代码了可以免掉后面再自行命令行用qmlplugindump了。 不过要自行更改QML_IMPORT_MAJOR_VERSION版本其代表的是主版本号。 . 调用插件 接下来就是怎么去使用我们的插件了 首先在上文生成插件后有一个QmlEditorStyle的文件夹。 将这个文件夹放到使用的工程文件下专门放QML插件的一个文件夹下我这里是qml文件夹你也可以命名为DLL或者其他什么的名字不影响。 插件信息输入 有两处需要填写插件信息的 第一处是pro里有个QML_IMPORT_PATH增加qml所在路径。 QML_IMPORT_PATH C:/Project/Qt/build-testQtQML-Desktop_Qt_5_15_2_MSVC2019_32bit-Release/release/qml我这里放的是生成的目标路径位置也可以放工程里是一样的不影响。 第二处是在main.cpp里有个engine调用engine增加插件路径。 QQmlApplicationEngine engine; engine.addImportPath(QString(%1/qml).arg(app.applicationDirPath())); // 可以用绝对路径之类的指向qml文件夹 const QUrl url(QStringLiteral(qrc:/main.qml)); ...第三处是调用处的qml里 import QtQuick 2.15 import QtQuick.Window 2.15 import QmlEditorStyle 1.1 // 调用对应的模块Window {width: 640height: 480visible: truetitle: qsTr(Hello World)MyItem { // 使用默认提供的C的Itemwidth: 100height: 100fillColor: red} } 上边如果import QmlEditorStyle 1.1或者MyItem有报错则是没有配置好。 如果能正常运行则是plugins.qmltypes没有弄好。 以上全部都弄好后应该是这样的 正常显示无报错 item能正常显示 至此Qt Qucik的插件方法教程结束。
http://www.zqtcl.cn/news/267661/

相关文章:

  • 网站设计与网页制作培训页面设计实训报告
  • 网站建设团队精神深圳福田最新消息今天
  • 网站制作主要公司哪个软件购物便宜又好
  • 如何取一个大气的名字的做网站263企业邮箱登录登录入口电脑版
  • 最好的做法是百度站长seo
  • 网站建设的基础常识dw个人简历网页制作
  • 网站建设怎么样做账义乌市住房和城乡建设局网站
  • 做网站友情链接的步骤wordpress文库主题
  • 网站模板用什么软件做泉州网站建设轩奇网讯
  • 网站开发必备人员网页设计图片居中代码
  • 网站列表页怎么做的百度seo优
  • 做网站销售好不好企业seo培训
  • 网站制作排版越南网站建设
  • 满城建设局网站我要买房网
  • 长沙百度提升排名南宁网站seo公司
  • 凡科网做网站怎样东莞寮步汽车城
  • 做百度网站费用多少基于html5的移动端网站开发
  • 专业做网站设计哪家好大型网站技术方案
  • 海外医疗兼职网站建设wordpress 最受欢迎主题
  • 网站改版方案案例入门级网页设计培训学员
  • 安徽优化网站运营平台
  • 小型企业网站设计教程面备案网站建设
  • 重庆业务外包网站建设办公室装修一般多少钱一个平方
  • 网站查询域名ip解析手机短视频网站的建设
  • 甘肃机械化建设工程有限公司网站微小店网站建设价格
  • 个人空间网站建设报告网络游戏交易平台
  • 深圳医疗网站建设中小企业网站功能
  • 汕头集团做网站方案建设网站要买空间吗
  • 宁波搭建网站专业展馆展厅设计公司深圳
  • 山东省建设工程电子信息网站广州开发区第一小学