Item {
id: root
width: 200
height: head.height
property bool state: false
property alias root: root
property alias head: head
property alias body: body
property alias title: title
property alias image: image
property alias mouseArea: mouseArea
property var data // when i define data variable in this way, program gets error
Tasks { id: tasks } // For call my c++ functions
Rectangle {
id: head
width: parent.width
height: 40
color: "#333333"
radius: 10
...
}
Rectangle {
id: body
visible: root.state
color: "#0d0d0d"
width: parent.width
height: 0
anchors.top: head.bottom
anchors.topMargin: 1
...
}
function addItem(categoryName) {
// let data = tasks.getJson() when i define data variable in this way, program works properly
let date = Qt.formatDateTime(new Date(), "dd.MM.yyyy")
for (let i = 0; i < Object.keys(data.categories).length; i++) {
if (data.categories[i].name === categoryName) {
for (let j = 0; j < Object.keys(data.categories[i].tasks).length; j++) {
if (date === data.categories[i].tasks[j].date)
listModel.append({_text: data.categories[i].tasks[j].name, _value: data.categories[i].tasks[j].score})
else {
//TODO: tasks.saveHistory(data)
data.categories[i].tasks[j].score = 0
data.categories[i].tasks[j].goal = 0
data.categories[i].tasks[j].date = date
listModel.append({_text: data.categories[i].tasks[j].name, _value: data.categories[i].tasks[j].score})
tasks.saveData(data)
}
body.height += 50
}
}
}
}
Component.onCompleted: data = tasks.getJson()
}
Моя проблема заключается в следующем: если я определяю переменную данных в функции addItem, моя программа работает правильно. Но когда я определяю переменную данных как глобальную, программа получает следующую ошибку:
qrc:/qml/PopUpGroupBox.qml:23: TypeError: Cannot read property 'width' of null
qrc:/qml/PopUpGroupBox.qml:72: TypeError: Cannot read property 'width' of null
Rectangle {
id: head
width: parent.width // line 23
height: 40
color: "#333333"
radius: 10
...
Rectangle {
id: body
visible: root.state
color: "#0d0d0d"
width: parent.width // line 72
height: 0
anchors.top: head.bottom
anchors.topMargin: 1
...
Примечание : Мой C ++ код также в порядке. Я проверял много раз.