c++ - 如何从 QAbstractItemView 中删除小部件

标签 c++ pyqt pyside qtreeview

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/

相关文章:

c++ - GCC 调试标志 SCons

python - 一个或多个QGroupBox如何使用QScrollArea?

python - 按钮悬停过渡持续时间

python - 使用 PySide 将数据库列转换为 Python 列表?

c++ - 为什么我调用 'wxGetTranslation' 会导致编译器错误 "ambiguous call to overloaded function"?

c++ - GDI+ 双缓冲

c++ - 采样率偏差和声音播放位置

python - 使用pyqt5渐进绘画的正确方法

python - 使用 PySide 搜索 QTableView 中的所有行

python - 如何在 QTableWidget 中选择多行?