javascript - QML:如何在自定义组件中触发onChanged?

标签 javascript qt qml

假设我们有以下自定义 QML 组件。

MyComponent.qml

//Contents for MyComponent.qml
import QtQuick 2.0

QtObject{
    property real myProperty
    ...
}


Test.qml

import QtQuick 2.0

Item {
    property var myComponent: MyComponent
    onMyComponentChanged: console.log("MyComponent changed!");
}


当更改 myComponent 中的任何属性时,我希望触发 onMyComponentChanged()。实现此目标的最佳方法是什么?

最佳答案

在 QML 中,大多数属性都有 onChanged 事件。例如;

MyComponent {
   property string name: "Super"
}

on + Property + Changed 信号将被发射(属性的第一个字母将大写)- 导致 onNameChanged


Item {
    id: mainItem
    property MyComponent myCustomComponent: MyComponent {
       onNameChanged: mainItem.handleMyComponentChange()
    }
    function handleMyComponentChange() {
     -----
    }

    myCustomComponent.name="Duper"  // triggers handleMyComponentChange()
}

关于javascript - QML:如何在自定义组件中触发onChanged?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32013618/

相关文章:

javascript - 如何使用 window.open() 快速访问我网站的根目录?

javascript - 在 CoffeeScript 中链接 jquery 方法和参数

c++ - 如何使用 Qt 在屏幕上绘制选择矩形?

qt - 自定义 Qt 设计器小部件 : a scroll Area containing a custom vertical layout

c++ - 更新 sourceModel() 而不在 QSortFilterProxyModel 上应用过滤

c++ - 从 C++ 中的 QML 文件加载属性

c++ - 将 c++ 信号连接到 qml 槽时出现警告

javascript - JavaScript 中的随机冒号是什么意思

javascript - jQuery UI - 滑出并推送相邻内容

c++ - modeltest + 简单表模式 = 父测试失败