́ω`*)b見た目の作成まずは、フィルター用の文字を入れるWidgetと、肝心のリストを表示するViewを用意したいと思います。今回は、「QWidget」に「QLineEdit」と「QListView」を突っ込んで作ります。QtGui.QListView(self)layout.addWidget(self.__listView)この段階では、こんな感じの見た目になります。QWidgetをベースにしているので、Mayaで実行する場合は、「setWindowFlags」で「QtCore.Qt.Window」の指定が必要です。フィルターの実装1まず、表示項目をフィルタリングしたい場合は、「QSortFilterProxyModel」をViewに設定します。QtGui.QListView(self)self.__listView.setModel(self.__proxyModel)layout.addWidget(self.__listView)「QSortFilterProxyModel」は、QStandardItemModelなどのようにデータを追加するものではなく、設定されたModelをフィルタリングするクラスです。Viewに表示するためのModelを、「QSortFilterProxyModel」に渡してあげる必要があります。図にすると、こんな感じでしょうか。QStandardItemModel→QSortFilterProxyModel→QListViewしかし!このままではViewにモデルを設定するルートがないので、モデルを外部から設定できるように「setSourceModel」を追加します。model):self.__proxyModel.setSourceModel(model)フィルターの実装2次は、QLineEditを編集したら、フィルタリングを実行する処理を追加します。QLineEditの文字が変更された時にSignal「textChanged」とコネクションします。model):self.__proxyModel.setSourceModel(model)次に、Slot側の実装です。QtCore.QRegExp(filter,QtCore.Qt.CaseSensitive,QtCore.QRegExp.Wildcard)self.__proxyModel.setFilterRegExp(regExp)フィルタリング用の文字列を元に、QRegExpのインスタンスを作成します。第1引数は、元となる文字です。ここでは、QLineEditに入力した文字列が指定されます。第2引数は、大文字・小文字を無視するかどうかです。「CaseSensitive」は区別する、「CaseInsensitive」は区別しないとなります。第3引数は、第1引数で指定した文字のあ使い方を設定します。ここでは、ワイルドカードとして認識するように設定しています。その他の種類については、コチラをご覧ください。最後に、Viewに設定した「QSortFilterProxyModel」の「setFilterRegExp」を使って、フィルタリングの情報(QRegExp)を設定します。テストテスト用に、シーン内にあるすべてのノード名をQStandardItemModelにつっこんで、簡易的なOutlinerを作ってみます。コメントをキャンセルメールアドレスが公開されることはありません。*サイトQSortFilterProxyModelの選択取得問題QListViewにファイルをD&Dする!!RECOMMENDこちらの記事も人気です。2018.1.30PySideでアニメーションGIFを表示する方法!!ABOUTこの記事をかいた人たっくんフリーランスのCG屋さん。