QML listView delegate

iamweirdo 2014-11-14 05:37:10
QML, ListView 的 delegate中能否返回不同的控件

例如: 一个 Row = 1; Column = 5 的ListView, 其delegate能否在第 0、2、4行返回ComboBox, 1、3行返回TextInput
...全文
464 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamweirdo 2014-11-24
  • 打赏
  • 举报
回复
引用 6 楼 foruok 的回复:
给个最简单的吧,通过隐藏来控制。当然复杂一点的也可以动态创建,比如在 Item 内使用 Component.onCompleted信号处理器。

ListView {
    delegate: Item {
        TextInput {
             visible: index % 2 == 0;
        }
        ComboBox {
             visible: index % 2 == 1;
        }
    }
}
最后通过 Loader 实现了
foruok 2014-11-17
  • 打赏
  • 举报
回复
给个最简单的吧,通过隐藏来控制。当然复杂一点的也可以动态创建,比如在 Item 内使用 Component.onCompleted信号处理器。

ListView {
    delegate: Item {
        TextInput {
             visible: index % 2 == 0;
        }
        ComboBox {
             visible: index % 2 == 1;
        }
    }
}
iamweirdo 2014-11-17
  • 打赏
  • 举报
回复
引用 3 楼 Marcelxx 的回复:
可以,根据不同列返回不同的代理,相应的data()和setData()等函数中也要根据列来进行判断。
给个例子, 好么?试了几种方法 , 都没能实现
iamweirdo 2014-11-17
  • 打赏
  • 举报
回复
引用 1 楼 foruok 的回复:
当然可以,你在delegate中判断index即可。
能给个例子么?
Marcelxx 2014-11-17
  • 打赏
  • 举报
回复
可以,根据不同列返回不同的代理,相应的data()和setData()等函数中也要根据列来进行判断。
yangchuankai 2014-11-15
  • 打赏
  • 举报
回复
自定义委托能够对视图进行完全的控制,可以小ks,尽管去用吧
foruok 2014-11-14
  • 打赏
  • 举报
回复
当然可以,你在delegate中判断index即可。

16,216

社区成员

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

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