の入力/戻りキーが押されたときに、選択したボックスをチェックするチェックボックスを使ってリストビューを作成しようとしています。私は私がなし値はitemFromIndexメソッドから返されますeventfilterで(はい、私はそれをサブクラス化するはずが、私が働いていることを得ることができませんでした)私のメインウィンドウのためのeventfilterのオーバーライドでQStandardItemModelのitemFromIndexメソッドがNoneを返すのはなぜですか? (インデックス無効)
これを行います.isValid()で問題なくインデックスを通過したにもかかわらず、明らかに私は何かを見逃しているが、私はそれを理解することができない - それは全く異なる指数を見ているのだろうか?モデルは更新されていませんか?代替アプローチに関する
何かアドバイスは私がファイルを読み込むときには、それが唯一と呼ばれています、私はアイテムを持つモデル(QStandardItemModel)を埋めるために使用する方法である
歓迎されています。
def update_siNLV(self,names,model):
model.clear()
for name in names:
item = Qg.QStandardItem(name)
item.setCheckState(Qc.Qt.Unchecked)
item.setCheckable(True)
model.appendRow(item)
これはeventFilter方法はこれとフィルタリングのように見える私はselectionModelのための変数を作成のinit方法からのものであり、私のQListView
self.sigInSelection = self.siNLV.selectionModel()
self.siNLV.installEventFilter(self)
にeventfilterをインストールメソッドの一部が機能します(Enterキーを押しながら選択したインデックスを印刷するようにしました)
def eventFilter(self,receiver,event):
if event.type() == QtCore.QEvent.KeyPress:
if event.key() == QtCore.Qt.Key_Return or event.key() == Qc.Qt.Key_Enter:
indexes = self.sigInSelection.selectedIndexes()
for index in indexes:
if index.isValid():
print(str(index.row())+" "+str(index.column()))
item = self.sigInModel.itemFromIndex(index)
item.setCheckState(qtCore.Qt.Checked)
return True
return super(form,self).eventFilter(receiver,event)
あなたは 'index'が' sigInSelection'の有効なインデックスであることを確認しているようです - 先験的*理由もなく、 'sigInModel'の有効なインデックスでなければなりません。 –
あなたは正しいです。したがって、 'sigInModel'がlistviewに設定されていても、組み込みのセレクションモデルであるsiNLVとインデックスを共有しませんか?それでは、私の選択肢を私のデータにどのように結びつけるのですか? –
'eventFilter'が機能していると言うので、' itemFromIndex'をどこで呼び出すのか分かりません。おそらくもう少しコードを見る必要があります。 MVCEが役に立ちます。 – strubbly