0

我知道我可以知道 QML 项目的宽度或高度是否使用插槽onWidthChangedonHeightChanged. 这是通过执行以下操作。

导入 QtQuick 2.12

Item {
    id: my_item

    onWidthChanged: {
        if (my_item.visible) {
            console.log("Dimension chnaged")
        }
    }

    onHeightChanged: {
        if (my_item.visible) {
            console.log("Dimension chnaged")
        }
    }
}

以上效果很好。但我只想知道我的 QML 项目的尺寸是否发生了变化。当宽度或高度发生变化时,我只需要一个回调。我不需要两者的回调。
是否有 QML 信号仅用于监听尺寸变化?

我使用的是Qt 5.15.7商业版。

4

2 回答 2

2

作为一种解决方法,您可以创建一个绑定到两者的属性,width并将height处理程序连接到该属性的更改信号:

property double dimensions: width * height
onDimensionsChanged: {
   if(my_item.visible)
       console.log("Dimension changed")
}

width有一个小风险,即交换&时数字不会改变height,但在你的情况下这可能是值得的

于 2021-12-01T08:45:26.783 回答
1

如评论中所述,默认情况下当前不存在此类信号。

您可以创建一个sizerect类型属性并对其做出反应:

property size dimensions: Qt.size(width, height)
onDimensionsChanged: console.log("Dimension changed")

这是一个为发射器供电的 WASM 示例:

https://www.canonic.com/#https://playground.canonic.com/525f6691-fe05-4824-a7f1-574bb8cabd8b/dimension-changed-signal-example

于 2021-12-01T15:06:18.083 回答