我有一个画布,其中包含一些可以拖动的MouseAreas。画布在这些项目之间绘制一些装饰,这些装饰无法表示为本机QML元素。
当项目更改大小或位置时,如何重新绘制画布?我知道我需要调用canvas.requestPaint(),但是在哪个事件上呢?到目前为止我找到的唯一解决方案是在计时器中调用requestPaint(),但由于性能原因,我想避免这种情况。
答案 0 :(得分:5)
根据QML documentation,QML
组件的每个属性都有一个与属性值变化相关的隐式信号:
属性更改信号的信号处理程序采用语法形式
on<Property>Changed
,其中<Property>
是属性的名称,首字母大写。例如,尽管TextInput类型文档没有记录textChanged信号,但是这个信号可以通过TextInput具有text属性隐式获得,因此只要此属性发生更改,就可以编写onTextChanged信号处理程序