quick3d中如何在Viewport中使用ListView等模型视图?

sgcc_zhs 2012-11-19 02:24:22
原来程序有几个展示model中数据的页面,用QML的GridView,ListView 等,现在想把其中的二维图片换成三维的,就用了Qt3D,结果三维图形显示不出来了。在官网的例子中有用Repeater的,没有找到在Viewport中显示GridView 的例子。Qt4.8+Qt3D 1.0,Qt5+Qt3D 2.0都是这样。

目前的做法是在GridView的delegate中包含一个Viewport,很挫的实现了,不过页面流畅性显著下降。
个人感觉理论上Qt3D不应当有这样的“缺陷”,大家有碰到过么? 如何解决的?求高人点拨。

...全文
92 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sgcc_zhs 2012-11-23
  • 打赏
  • 举报
回复
看来这个问题太不大众化,自己没搞定,结贴。
sgcc_zhs 2012-11-19
  • 打赏
  • 举报
回复
下面的代码是“理论”上的实现方式:
import QtQuick 1.0
import Qt3D 1.0
import Qt3D.Shapes 1.0

Rectangle {
id:v1
height:600
width:600

ListModel {
id: rssModel
ListElement { name: "dd1"}
ListElement { name: "dd2" }
ListElement { name: "dd3"}
ListElement { name: "dd4"}
ListElement { name: "dd5" }
ListElement { name: "dd6"}
ListElement { name: "dd7"}
ListElement { name: "dd8" }
}

Viewport {
width: parent.width; height: parent.height

Component {
id: octoDisplayDelegate
Rectangle {
width:100; height:100
color:"lightgreen"
radius :8

Text {
anchors.bottom: parent.bottom
text: qsTr(name)
}

Quad {
scale: 1.5;
effect: Effect {color: "#aaca00"}
}
}
}

GridView {
anchors.fill: parent
cellWidth: 100; cellHeight: cellWidth
delegate: octoDisplayDelegate
model: rssModel
}

} //--Viewport
}


执行效果:


文本在,立方体没了。
sgcc_zhs 2012-11-19
  • 打赏
  • 举报
回复
自己跟帖子:
以下是目前的方法:

import QtQuick 1.0
import Qt3D 1.0
import Qt3D.Shapes 1.0

Rectangle {
id:v1
height:600
width:600

ListModel {
id: rssModel
ListElement { name: "dd1"}
ListElement { name: "dd2" }
ListElement { name: "dd3"}
ListElement { name: "dd4"}
ListElement { name: "dd5" }
ListElement { name: "dd6"}
ListElement { name: "dd7"}
ListElement { name: "dd8" }
}

Component {
id: octoDisplayDelegate
Rectangle {
width:100; height:100
color:"lightgreen"
radius :8

Viewport {
width: parent.width; height: parent.height

Text {
anchors.bottom: parent.bottom
text: qsTr(name)
}

Quad {
scale: 1.5;
effect: Effect {color: "#aaca00"}
}

}
}

}

GridView {
anchors.fill: parent
cellWidth: 100; cellHeight: cellWidth
delegate: octoDisplayDelegate
model: rssModel
}

}


效果:



目录 第一章 ExtJs大比拼JQuery:Dom文档操作 3 一、选择器 4 二、属性 8 四、筛选 10 五、文档处理 11 六、CSS 13 七、事件 14 第二章 ExtJs对js基本语法扩展支持 16 一、动态引用加载 16 二、对类的封装 17 三、基本数据类型 19 四、函数执行时间控制 20 五、键盘事件侦听 21 第三章 Ext.Ajax 对ajax的支持 23 一、ExtJs的Ajax:Ext.Ajax.request 23 二、元素对象Ajax式更新:Ext.Updater,[已弃用] 29 第四章 Ext.XTemplate 模板 31 一、使用标签tpl和操作符for 33 二、在子模板的范围内访问父元素对象 34 三、数组元素索引和简单运算支持 34 四、自动渲染单根数组 35 五、条件逻辑判断 36 六、即时执行任意的代码 36 七、模板成员函数 37 lipan 38 第五章 Ext.Button 按钮 38 预览 39 一、基本按钮,三种方式实现按钮事件 40 二、带图标菜单 41 三、带分割线的按钮 43 四、菜单式按钮 44 四、按钮组合 45 第六章 Ext.MessageBox 消息对话框 46 一、警告对话框和确认对话框 46 二、输入对话框 47 三、自定义DIY对话框 48 四、加载进度条对话框 49 五、等待进度条对话框 50 六、基本的等待对话框 51 第七章 Ext.tip.ToolTip 提示 52 一、基本提示 Ext.tip.ToolTip 52 二、快速提示 Ext.tip.QuickTip 58 三、在extjs控件上使用提示 59 第八章 Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件 61 一、滚轴控件 Ext.slider 61 二、进度条控件 Ext.ProgressBar 64 三、编辑控件 Ext.Editor 68 第九章 Ext.Panel 面板控件、 Ext.window.Window 窗口控件、 Ext.container.Viewport 布局控件 72 一、面板控件 Ext.Panel 72 二、窗口控件 Ext.window.Window 74 三、布局控件 Ext.container.Viewport 77 第十章 Ext.tab.Panel 选项卡 79 一、基本选项卡 79 二、操作选项卡 82 三、选项卡按钮在下方 84 四、可拖动的选项卡 85 五、过多选项卡的菜单式展示 87 六、选项卡的右键菜单 89 七、分组式选项卡 91 第十一章 Ext.ListView、Ext.view.View 数据视图 93 一、Ext.ListView 93 二、Ext.view.View 98 第十二章 Ext.toolbar.Toolbar 工具栏、Ext.toolbar.Paging 分页栏、Ext.ux.statusbar.StatusBar 状态栏 103 一、Ext.toolbar.Toolbar 103 二、Ext.toolbar.Paging 115 三、Ext.ux.statusbar.StatusBar 122 第十三章 Ext.menu.Menu 菜单、Ext.draw.Component 绘图、Ext.resizer.Resizer 大小变更 128 一、Ext.menu.Menu 菜单 128 二、Ext.draw.Component 绘图 134 三、Ext.resizer.Resizer 大小变更 137 第十四章 layout 布局 138 一、absolute 138 二、accordion 140 三、anchor 142 四、border 144 五、card 146 六、column 148 七、fit 150 八、table 151 九、vbox 152 十、hbox 154

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧