QAbstractItemView 有 `setIndexWidget但没有“删除”功能。
我试图通过存储传递给 QAbstractItemView
的小部件来解决这个问题,并在我想从中删除它们时 hide
/delete
它们以 RuntimeError: wrapped C/C++ object of %S has been deleted
错误结束的 View 。我假设这是由于小部件的所有权被传递给视口(viewport),正如文档所说:
Sets the given widget on the item at the given index, passing the ownership of the widget to the viewport.
如何删除小部件?
我正在使用 PyQt
,但我认为对于 C++
和 PySide
也是有效的问题。
最佳答案
QAbstractItemView
是基于模型的 View 的基础。这意味着您应该从模型中移除项目,而不是从 View 中移除项目。然后模型负责通过适当的信号通知 View 。
您可能对 QAbstractItemModel
感兴趣方法,例如 removeRow
。如果您自己实现模型,则您有责任实现它们并自行发出信号。
关于c++ - 如何从 QAbstractItemView 中删除小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15128282/