3

QAbstractItemView にはsetIndexWidgetがありますが、「削除」機能はありません。

ビューからそれらを削除したいときにQAbstractItemViewand hide/それらに渡されるウィジェットを保存することで回避しようとしましたが、エラーが発生しました。ドキュメントにあるように、ウィジェットの所有権がビューポートに渡されるためだと思います。deleteRuntimeError: wrapped C/C++ object of %S has been deleted

Sets the given widget on the item at the given index, passing the ownership of the widget to the viewport.

ウィジェットを削除するにはどうすればよいですか?

私は使用していますが、 and にもPyQt有効な質問だと思います。C++PySide

4

3 に答える 3

1

新しいウィジェットとして渡すNoneと、古いウィジェットが削除され、代わりに何も配置されず、古いウィジェットが効果的に削除されます。

foo.setIndexWidget(index, None)

None注:これはasを渡すのと似てparentおり、 。removeParentだけがありsetParentます。

于 2013-02-28T10:00:49.020 に答える
1

QAbstractItemViewモデルベースのビューのベースです。これは、ビューからではなく、モデルからアイテムを削除する必要があることを意味します。次に、モデルは適切な信号を介してビューに通知する責任があります。

おそらくQAbstractItemModel、などのメソッドに興味がありますremoveRow。モデルを自分で実装する場合は、モデルを実装し、シグナルを自分で上げる責任があります。

于 2013-02-28T09:52:20.633 に答える