为什么下面的代码在QML中导致TypeError

时间:2016-01-22 18:58:54

标签: javascript qt qml

import QtQuick 2.0
import QtQuick.Layouts 1.1
import QtQuick.Controls 1.1
import "../../shared" as Examples

Item{
  Slider {
    x: 0;
    y: 0;        
    id: minSizeSlider;
    value: 5.0;
    minimumValue: 0.0;
    maximumValue: 128.0
    onValueChanged: {
        if( value < maxSizeSlider.value ) {
            console.log("minValue:" + value);
        } else {
            value = maxSizeSlider.value;
        }
    }
}

Slider {
    x:0;
    y:100;        
    id: maxSizeSlider;
    value: 50.0;
    minimumValue: 0.0;
    maximumValue: 128.0
    onValueChanged: {
        if( value > minSizeSlider.value ) {
            console.log("maxValue:" + value);
        } else {
            value = minSizeSlider.value;
        }
    }
  }
}

当我跑步时,我收到:

example.qml:54: TypeError: Cannot read property of null

看起来就像这一行:

if( value < maxSizeSlider.value )

是问题,尤其是

maxSizeSlider.value

似乎会导致错误。 该示例按预期工作,唯一的问题是错误输出

1 个答案:

答案 0 :(得分:1)

初始化第一个Gridview1.rows.remove(datarow) 时,Slider会立即触发,因为您设置的值(5.0)与默认值(0)不同。那时,第二个onValueChanged尚未加载,因此您无法访问其值。 你可以通过排除这种情况来消除错误:

Slider