当 QML 项目的尺寸发生变化时如何获得通知?
How to get notified when a QML item's dimensions change?
我知道我可以使用插槽 onWidthChanged
和 onHeightChanged
了解 QML 项目的宽度或高度是否发生了变化。这是通过执行如下操作。
导入 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商业版。
作为解决方法,您可以创建一个绑定到 width
和 height
的 属性,并将处理程序连接到 属性 的已更改信号:
property double dimensions: width * height
onDimensionsChanged: {
if(my_item.visible)
console.log("Dimension changed")
}
存在一个小风险,即交换 width
和 height
时数字不会改变,但在您的情况下这可能是值得的
如评论中所述,默认情况下目前不存在此类信号。
您可以创建 size
或 rect
类型 属性 并对此做出反应:
property size dimensions: Qt.size(width, height)
onDimensionsChanged: console.log("Dimension changed")
这是一个为发射器供电的 WASM 示例:
我知道我可以使用插槽 onWidthChanged
和 onHeightChanged
了解 QML 项目的宽度或高度是否发生了变化。这是通过执行如下操作。
导入 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商业版。
作为解决方法,您可以创建一个绑定到 width
和 height
的 属性,并将处理程序连接到 属性 的已更改信号:
property double dimensions: width * height
onDimensionsChanged: {
if(my_item.visible)
console.log("Dimension changed")
}
存在一个小风险,即交换 width
和 height
时数字不会改变,但在您的情况下这可能是值得的
如评论中所述,默认情况下目前不存在此类信号。
您可以创建 size
或 rect
类型 属性 并对此做出反应:
property size dimensions: Qt.size(width, height)
onDimensionsChanged: console.log("Dimension changed")
这是一个为发射器供电的 WASM 示例: