QML ListView 多选
如何在 QML ListView 中选择一些元素并将其索引发送到 C++ 代码?
How can I select a few elements in the QML ListView and send its indices to C++ code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
执行类似的操作:如果单击某个元素,则将其属性设置为 selected (或无论您如何称呼它),并在委托中设置如果 selected 为 true,则应采用不同的格式。另外将其添加到某个列表中以使用它。
Do something like that: if an element is clicked, set its property selected (or however you call it), and set in delegate that if selected is true, then it should be formatted differently. Plus add it to some list, to work with it.
我很确定没有办法使 QML ListView 可以多选。 Qt Declarative 专注于触摸屏使用,在纯触摸 UI 中没有有意义的多选方法。
I am pretty sure there is no way to make a QML ListView multi-selectable. Qt Declarative is focused on touch screen use and there is no meaningful way to multiselect in a pure touch UI.
我遇到了同样的问题,我发现实现它的最佳方法是为列表视图创建一个新角色。假设它是名字并被选中。您需要同时使用 onCurrentIndexChanged 和 onClicked,因为如果您滚动,这将更改项目,但它不是单击。在它们中,将选择的角色更改为 true,或根据您的需要进行调整,可能您不需要滚动来选择,因此仅使用 onClicked。单击时,您可以将所选角色更改为 true
,
然后您可以在 deligate 中使用突出显示,这将根据所选状态更改颜色。
这是经过测试可以正常工作的完整代码
i had the same issue and i found the best way to implement it, is to create a new role to the listview. Lets assume it is firstname and selected. you need to use both onCurrentIndexChanged and onClicked, because if you scroll, this will change the item but it is not a click. In both of them change the role selected into true, or adjust as it suits you, may be you don't need scroll to select and thus use only the onClicked. When clicked you can change the role selected into true
and
then you may use a highlight in the deligate, this will change the color based on the state of the selected.
Here is a full code that is tested to work
您可以尝试获取 ListItem 的数据并将其存储到奇数单击时的数组中,并在偶数单击时从数组中删除 ListItem 的数据。可能是一个简单的锻炼,而不是创建诸如项目之类的复选框列表。
You may try to get the ListItem's data and store it to an array on odd click and remove the ListItem's data from the array on even click. May be a simple workout, instead of creating a list of check box like items.