zoukankan      html  css  js  c++  java
  • 一个关于qml插件的文章-转

    制作Qt Quick 2 Extension Plugin的几个问题-Qt

    经过几天的google和爬帖,加上自己的摸索,终于把新版的Qt Quick 2制作插件的问题给弄了个明白,工作流可以建立了。几个让我费了很多力气的问题,在此记录一下。

    我们最终的目标是实现插件在Qt Creator中的顺利载入,并能够实现代码补全。

    Point 1.

    Qt Quick 2 使用qmlsecene而不像第一代使用qmlviewer(我很喜欢!因为调试功能很全,而qmlsecene就是光杆一个),插件的编译类型要选择对应的MinGW+Release方式生成。

    Point 2.

    在项目文件(.pro)中修改,假设要载入的插件放在pro文件所在文件夹中的plugin文件夹下面,具体方法:

    qmlproject:

    importPaths: [ "./plugin" ]
    c++ project:

    QML_IMPORT_PATH = plugin

    Point 3.

    修改过后, 就要注意看自己创建插件时指定的uri了。譬如cn.iyinchao,就要将编译好的dll譬如叫plugin.dll连同qmldir文件一同复制到对应的plugin/cn/iyinchao/下面。这样,在Qt Creator中就可以使用
    import cn.iyinchao 1.0

    导入插件。并且运行成功。
    Point 4.

    但是,当我使用自定义类,姑且叫它MyItem,仍然无法代码补全,下面有红波浪线(程序猿最怕看到啦)。帖子爬啊爬,终于在官方文档中看到,使用qmlplugindump,生成插件的信息(.qmltypes)就可以让Qt Creator正确读取typeinfo信息并进行补全了。打开命令行,运行:
    qmlplugindump.exe -notrelocatable [cn.iyinchao 1.0] [path/to/plugin] > [path/to/plugin/cn/iyinchao/Name.qmltypes]

    执行完,就可生成qmltypes文件。编辑qmldir文件,加入
    typeinfo Name.qmltypes

    就可以让Qt Creator实现代码补全了。
    -notrelocatable 这点很重要,不加的话生成的qmltypes文件在我这里无效(这个知识找的很辛苦啊)
    Final.

    至此,我们可以正确地导入插件,并且让Qt Creator对我们的插件进行代码提示了。

    —————————————————————————————————-

    EDIT:

    发现qmlsecene可以打开一些debug模式的。参见qmlsecene的源代码

    例如使用slowAnimation:

    qmlscene.exe –slow-animations -I [path/to/your/plugin] [path/to/the/qml/file.qml]

    为什么加入了-notrelocatable之后,qmltypes起作用了呢?打开文件,发现只有一处不同:

    未加入:

    exports: ["MyModule 1.0"]

    加入后:

    exports: ["cn.iyinchao/MyModule 1.0"]

    估计是给出了uri,与import的uri相符,才找到了对应的对象MyModule。只是猜想

  • 相关阅读:
    Single Image Dehazing via Conditional Generative Adversarial Network(CVPR2018-图像去雾)
    STF-GAN:Recovering Realistic Texture in Image Super-resolution by Deep Spatial Feature Transform (CVPR2018)
    os 模块
    Pytorch-get ready with me
    Python学习(第七章)
    Python学习(第六章)
    pytorch与opencv 安装(Linux)
    Python学习(第五章)
    Python学习(第四章)
    Python学习(第三章)
  • 原文地址:https://www.cnblogs.com/xianqingzh/p/4368070.html
Copyright © 2011-2022 走看看