读书人

Qt4.8.0+Qt3D 升级到 Qt5.0.0 Repeate

发布时间: 2012-12-15 15:16:03 作者: rapoo

Qt4.8.0+Qt3D 升级到 Qt5.0.0 Repeater生成Item3D不成功
原来程序是基于Qt4.8.0 + Qt3D 1.0,有个Repeater把ListModel中生成Item3D的功能,效果如下:


程序升级到Qt5.0.0 也就是第一个beta版后,功能不能实现了。尝试了有两天了,在老版本上代码运行正常,copy到新版后,不能实现功能。

哪个高手帮忙看看是哪里出了问题? 莫非是程序bug??

以下是代码:

import QtQuick 2.0
import Qt3D 2.0
import Qt3D.Shapes 2.0

Viewport {
width: 600
height: 400

ListModel {
id: mostvisited11
ListElement { itemName: "index1" ;filePath:"pics/1.jpg" }
ListElement { itemName: "index2" ;filePath:"pics/2.jpg" }
ListElement { itemName: "index3" ;filePath:"pics/3.jpg" }
ListElement { itemName: "index4" ;filePath:"pics/2.jpg" }
ListElement { itemName: "index5" ;filePath:"pics/3.jpg" }
}

//中心立方体
Cube { effect: Effect { color:"red"; blending: true} }

Component {
id: octoDisplayDelegate
Item3D {
transform: [
Translation3D { translate: Qt.vector3d(0, 0, 2.6) },
Rotation3D { axis: Qt.vector3d(0, 1, 0);
angle: (360 / 16) * (index * 2 + 1) }
]
Item3D {
Cube { effect: Effect { color:"red"; blending: true}
Text { id: name1; x:index * 79; text: itemName ;color: "red" }
}
}
}
}

Repeater {
delegate: octoDisplayDelegate


model: mostvisited11
}

}


[最优解释]
最原始的方法,不要用Repeater生成了,定义一个cube控件,然后按照位置关系依次摆放上去。很挫很挫的实现...
[其他解释]
看来Qt5兼容Qt4不太好。
[其他解释]
在qt5的beta2中已经剔除了,Qt3D的前途让人担忧...
[其他解释]
按理说应该向下兼容呀
[其他解释]
引用:
按理说应该向下兼容呀


确实不应该,可以把上面的代码分别在两个版本中执行下,Qt4.8.0中是 Qt3D 1.0。

另外在源码自带的例子中 qt3d\demos\quick3d\flickr3d 有个类似的功能,也执行不正确。
不排除本机环境问题,window7,vs2010。希望哪位高手救火。
[其他解释]
Qt5.0.0 bata1 在Qt3d这个模块上存在缺陷,有几个bug墨迹几天都过不去,放弃升级了。
在用的朋友们最好等着稳定版或者沿用老版本。

读书人网 >QT开发

热点推荐