QTreeViewの選択アイテムをクリアにする!!

QTreeViewでアイテムをクリアにするために、「ボタンとかを作成して簡単に空っぽにしたいなー」と僕はよく思います。あと、ヘッダがほしいからQListViewでなく、QTreeViewを使うっというケースも多いです。

View系に設定したModelのヘルプを見ると「clear」があるので、ラッキー!っと早速試してみると、、、

なんということでしょう~Headerもろとも綺麗さっぱり広々としました(‘A`)

そこで、「QStandardItemModel」を継承して、アイテムだけ削除する「clearItem」を実装してみたいと思います!

class StandardItemModel(QtGui.QStandardItemModel):
    def __init__(self, *args, **kwargs):
        super(StandardItemModel, self).__init__(*args, **kwargs)
        
    def clearItem(self):
        self.removeRows(0, self.rowCount())

アイテムだけ消したい場合は、「removeRows」を使って、最初から終わりまで指定すればできちゃいます!最初は「0」固定で、終わりについては「self.rowCount()」を使って行数を調べればOKです。

使用していた「QStandardItemModel」を上記の「StandardItemModel」に切り替え、ボタンのスロットに指定していたメソッドを「clear」から「clearItem」に切り替えるといい感じになります!

今回は、QStandardItemModelをカスタマイズしましたが、View側に作っても使いやすいかもしれませんね!あ、でも役割の範囲を超えすぎですね、、、(;´∀`)