Qml 手动更新/重新绘制项目

Qml 手动更新/重新绘制项目,qml,qt5,qtquick2,qtquickcontrols,Qml,Qt5,Qtquick2,Qtquickcontrols,我的问题与日历相关,但可以应用于每个QML visual项目。有没有办法手动重新绘制项目 在我的例子中,我有一个带有自定义内容的日历(单元格26中的小橙色数字): 为此,我使用样式: 导入QtQuick 2.5 导入QtQuick.Window 2.2 导入QtQuick.Controls 1.2 导入QtQuick.Controls.Styles 1.2 窗口{ 宽度:300 身高:300 id:窗口 历法{ id:日历 锚定。填充:父级 属性变量dataArr:{26:7} 样式:日历样式

我的问题与
日历相关,但可以应用于每个QML visual
项目
。有没有办法手动重新绘制
项目

在我的例子中,我有一个带有自定义内容的
日历(单元格26中的小橙色数字):

为此,我使用样式:

导入QtQuick 2.5
导入QtQuick.Window 2.2
导入QtQuick.Controls 1.2
导入QtQuick.Controls.Styles 1.2
窗口{
宽度:300
身高:300
id:窗口
历法{
id:日历
锚定。填充:父级
属性变量dataArr:{26:7}
样式:日历样式{
dayDelegate:矩形{
标签{
text:styleData.date.getDate()
anchors.centerIn:父对象
}
标签{
字体.像素大小:8
anchors.right:父项.right
.bottom:parent.bottom
宽度:12
身高:10
水平对齐:Text.AlignHCenter
文本:calendar.dataArr[styleData.date.getDate()]?calendar.dataArr[styleData.date.getDate()]:“”
颜色:“橙色”
}
}
}
Component.onCompleted:{
calendar.dataArr[26]=8;//这不起作用
}
}
}
这对静态数组很好,但如果我在数据数组中更改一个值,它不会更新单元格。如何强制
日历
更新?

根据,绑定更新不会以这种方式触发
var
。他们在示例之后提供了解决方案。在此应用它:

property var dataArr: new Object( {26: 7} )
...
Component.onCompleted: {
   dataArr = new Object( {26: 8} )
}

是的,谢谢@astre,看来这是重新粉刷物品的唯一方法。我认为它将是很好的,有一些功能来手动更新一个项目。我将在Qt bug tracker中创建一个记录单