`
tcspecial
  • 浏览: 911473 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

qml加载插件

    博客分类:
  • QT
阅读更多

      上文已经讨论过如何在qml使用C++自定义对象,只不过代码比较固化,我们可以将自定义对象做成插件导出,然后在qml中加载即可

 

一. 导出qml插件

     只需要继承 QDeclarativeExtensionPlugin,重新实现 registerTypes() 即可

     

// PieChart.h

// 导出插件
class PieChartPlugin:public QDeclarativeExtensionPlugin
{
    Q_OBJECT

public:
    void registerTypes(const char *uri);
};

 

// PieChart.cpp

void PieChartPlugin::registerTypes(const char *uri)
{
    Q_ASSERT(uri==QLatin1String("com.sun.PieChart"));
    qmlRegisterType<PieChart>(uri,1,0,"PieChart");  // 注册PieChart对象
}

Q_EXPORT_PLUGIN2(qmlpiechartplugin,PieChartPlugin);  // 宏导出插件

 

二. 测试运行

import QtQuick 1.1
import com.sun.PieChart  1.0  // 导入插件

Rectangle {
    width: 360
    height: 360
    color: "green"

    // 显示自定义饼图
    PieChart{
        id: pieChart
        color:"red"
        width: 300; height:300
        anchors.centerIn: parent
        onChartCleared: {  // 处理 chartCleared 信号
            var msg=qsTr("The chart has been cleared");
            console.log(msg);
        }
    }
	
	MouseArea {
        anchors.fill: parent
        onClicked: {
            // 发射清除pie信号
            pieChart.clearChart();
        }
    }
} 

    

   

 

   注:1. qmlviewer -I 参数指定插件目录; 如在代码中调用,指定 viewer.engine()->addPluginPath("d:/plugins"); 

        2. 插件一定要编译release版本,才能被识别,因为qmlviewere.exe本身是release版本

 

  • 大小: 46.1 KB
分享到:
评论

相关推荐

    Qt qml加载Html百度地图 qml发送模拟经纬度控制地图图标移动

    通过Qt QML加载HTML百度地图,结合QML与JavaScript的通信,我们可以实现对地图图标的动态控制。这个技术在多个平台上都适用,只需注意平台特性的适配。实践过程中,不断优化性能和用户体验,可以构建出高效、互动的...

    Qml 的 qml 插件和c++插件编写调用

    3. **加载插件**:在QML文件中,我们需要告诉QML引擎在哪里可以找到这个插件。这通常通过`import`语句完成,指定插件的命名空间和路径。例如:`import MyNamespace 1.0`。 接下来,我们关注C++插件的使用。C++插件...

    Qml调用插件QmlPlugin.7z

    在Qt应用运行时,QML引擎会自动寻找并加载这个库,使得QML可以使用其中定义的类型。 5. **在QML中使用插件**:在QML文件中,可以通过`import`语句引入插件。例如,如果你的插件名为"MyPlugin",版本号为"1.0",则...

    QML Loader 加载项目间通信

    在Qt Quick QML中,Loader组件是一个非常强大的工具,它允许动态加载和卸载QML组件,这在构建可扩展和灵活的用户界面时尤其有用。Loader不仅可以加载单个QML文件,还可以作为项目间通信的一种方式。在这个场景中,...

    Qt6 QML Book/动态QML/动态加载组件示例源码

    在本文中,我们将深入探讨Qt6中的QML技术,特别是关于动态加载组件的实现和使用。QML是Qt框架的一部分,它提供了一种声明式语言,用于构建用户界面和进行图形编程。Qt6版本带来了许多改进和新特性,使得QML更加强大...

    qml窗口句柄的获取以及QWidget嵌入到QML窗口

    3. **加载QML文件**:设置QML文件路径并加载到窗口中。 ```cpp QQmlComponent component(&engine, "main.qml"); QQuickItem *rootItem = component.create(); window-&gt;setRootObject(rootItem); ``` 4. **获取窗口...

    QML+Chart.js 实现图表显示

    1. **创建HTML5 Canvas元素**:在`QML`中,可以使用`WebView`或`QuickWebEngineView`组件来加载包含`Chart.js`脚本的HTML页面。`Canvas`元素作为图表的画布,用于渲染`Chart.js`生成的图表。 2. **数据传递**:将Qt...

    QML-C++例子

    这些插件通常会被QML引擎自动加载,以便QML代码能直接使用。 5. **Q_INVOKABLE和Q_PROPERTY**:`Q_INVOKABLE`宏标记的C++成员函数可以在QML中直接调用,而`Q_PROPERTY`定义的属性可以在QML中读写。这两个宏是C++与...

    基于QT的插件的调用

    3. **动态加载**:在QML中,可以使用`Loader`组件动态加载插件定义的QML元素。`Loader`会在运行时根据其`source`属性加载并显示指定的QML文件。 4. **通信与交互**:通过使用信号和槽,C++插件和QML之间可以进行...

    Qml动态语言切换QmlLanguage.7z

    例如,假设你有自定义的QML语言插件(如JavaScript、Python或其他方言),你可以这样切换: ```cpp // 创建QML引擎 QQmlEngine engine; // 设置初始的语言(默认为JavaScript) QQmlScriptEngine jsEngine; engine...

    QT地图的高德地图插件(Map Plugin)

    首先,`main.cpp`是应用程序的主要入口点,它包含了初始化QT框架、创建应用程序对象以及加载和运行QML界面的代码。在这里,我们可能看到如何注册地图插件并设置初始地图视图的相关设置。 `MapPlginDemo.pro`是QT...

    qmlAlembic:Qml Alembic插件可视化Alembic点云

    Qml Alembic插件则是将这种强大的功能引入到Qt的QML环境中,让开发者可以轻松地在QML应用中处理和展示Alembic文件中的3D数据。 Qt Quick是一种基于Qt库的用户界面框架,它使用声明式语法创建动态和交互式的UI。通过...

    QML与c++混编 测试

    引擎插件允许我们创建可由QML加载和使用的C++对象,而QQuickItem子类则是将C++组件直接嵌入到QML场景中。 1. 创建引擎插件: - 首先,定义一个C++类,继承自`QQmlExtensionPlugin`,并实现`registerTypes`方法来...

    QML2与C++交互

    9. **QQmlExtensionPlugin**:如果你想要在QML中创建可重用的自定义元素,可以编写一个插件来注册这些元素。 10. **QML元件的异步加载**:通过使用`Component.onCompleted`信号,可以在QML元素加载完成后执行初始化...

    将图片文件转qml文件,进行qt Ui的设计

    "photoshop-qmlexporter-master"这个压缩包文件很可能包含一个插件或脚本,用于从Adobe Photoshop导出QML兼容的图片数据。这种工具可能简化了导出过程,自动调整图片大小,甚至可以生成QML代码片段,方便直接在QML...

    QML常见模型使用源码

    - `QQmlComponent`:可以作为一个动态模型,用于动态加载和实例化QML组件。 - `QAbstractItemModel`(C++):对于更复杂的数据结构和需要C++后端支持的情况,可以使用这个基类实现自定义模型。 2. **ListModel的...

    qt+qml+vue构建应用程序示例

    将Qt与Vue.js结合,我们可以通过Qt的QML引擎加载Vue组件,实现后端逻辑与前端视图的分离。这种结合方式通常分为以下几个步骤: 1. **设置环境**:确保安装了Qt库,并且选择了带有QML模块的版本。同时,需要安装Vue....

    Qml图片转灰度QmlGrayImage.7z

    在QML中,我们可以通过访问`Image`元素的`source`属性加载图片,然后利用JavaScript或者自定义C++插件进行像素级别的处理。 以下是实现灰度转换的一种基本步骤: 1. **创建自定义QML类型**:首先,我们需要创建一...

    Qt Qml webview 打开本地PDF

    注意,QtWebEngine模块可能不直接支持加载PDF文件,因此可能需要借助JavaScript插件或自定义的网络访问处理器。一种常见的解决方案是使用一个JavaScript代码片段,该片段将PDF文件作为数据URL加载到WebView中。这...

Global site tag (gtag.js) - Google Analytics