我有一个针对 Qt 5.15.8 编写的 Qt 应用程序。我在其上声明了 QML 项目。我知道以下是我可以确定 QML 项目何时调整大小的方法。基本上我知道宽度或高度何时改变。
Item {
id: my_item
property double dimensions: width * height
onDimensionsChanged: {
if(my_item.visible)
console.log("Dimension changed")
// Some heavy processing logic to run which I want to run if dimension change is complete.
}
}
问题:
有没有办法让我知道宽度或高度或尺寸更改何时完成或停止?由于我的代码内部原因,当 QML 项目的大小发生变化时,我必须进行繁重的处理。我想在尺寸更改完成后触发繁重的处理。有没有办法知道尺寸更改何时完成?
如果 Qt/QML 没有内置事件,智能 C++ 或 QML 技巧也可以作为答案吗?
最佳答案
可能有帮助的一件事是使用 Qt.callLater() 。这用于帮助减少对函数的冗余调用。它不会直接调用您的函数,而是发布一个事件。如果你连续多次使用 callLater() ,它仍然足够聪明,仍然只调用你的函数一次。尝试这样的事情:
Item {
id: my_item
property double dimensions: width * height
onDimensionsChanged: {
Qt.callLater(doHeavyProcessing);
}
function doHeavyProcessing() {
// Some heavy processing logic to run which I want to run if dimension change is complete.
}
}
关于qt - 如何检测 QML 项目的尺寸更改何时完成或停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70608938/