在QListView中为每个Item添加一个删除按钮

时间:2014-09-19 11:52:56

标签: qt qlistview

是否有可能在QListview中向每个Item添加一个正在删除Object onClick的Button?如下图所示:

Item witch delete Button

编辑:作为我在QT中的新成员,有一些例子可以更好地理解它。而且似乎有三种不同的方式?什么是最好的?请使用QAbstractItemView?

2 个答案:

答案 0 :(得分:2)

是。你需要使用:

QAbstractItemView::setIndexWidget ( const QModelIndex & index, QWidget * widget )

QListView继承QAbstractItemView,当您尝试自定义通常需要查看的列表/树视图时。但要小心,没有代表,这不能很好地扩展。看看这个主题:http://www.qtcentre.org/threads/26916-inserting-custom-Widget-to-listview

答案 1 :(得分:0)

您还可以选择适用于各种容器的通用方法,包括列表视图的基础模型。

列表中的每个项目都有一个requestRemoval(Item*)信号和一个removeMe()广告位,将X按钮连接到每个项目构造函数中的removeMe()广告位,在removeMe()中发出requestRemoval(this)信号,它连接到您父母的removeHandler(Item*)广告位"创建该项目时的对象,该项目接收具有请求删除的项目的指针,并将其从正在使用的基础容器中删除。

基本上,按下删除按钮会导致该特定项目将其自身的指针发送到父删除处理程序,删除该条目。

编辑:请注意,这是一种通用的方法,如下面的评论中所述,它也可以在没有信号和插槽的情况下应用,即使它可以工作,它也不是特定情况下最有效的解决方案。