0

我有一个针对 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 技巧来回答?

4

1 回答 1

1

可能有帮助的一件事是使用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.
    }
}
于 2022-01-06T15:38:50.637 回答