QTableView
セルを編集するときに発生するエラーを追跡しようとしています。要素を編集するたびに、次のように表示されます。TableViewセルを編集するときに "RuntimeError:maximum recursion depth exceeded"を取得する
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
毎回正確に7回。それでも動作しますが、編集を続けてしまうと最終的にロックされ、何も編集できなくなります。
これは、セルの編集が終了した時点で私のsetData()関数上にあると仮定しています。私はこれがどのように関連するか、またはされている場合、私はのsetData(でインデックスを使用)が、それほどわからない理解
When reimplementing this function in a subclass, be careful to avoid calling QModelIndex member functions, such as QModelIndex::parent(), since indexes belonging to your model will simply call your implementation, leading to infinite recursion.
:私の研究中に
def setData(self, index, value, role = Qt.EditRole):
if role == Qt.EditRole:
row = index.row()
column = index.column()
item = value
self.__shots[row][column] = item
self.dataChanged.emit(index,index)
return True
return False
は私だけQModelIndex()(here)についてはこれを見つけました修理する。私はモデルビューを初めて使い、ほとんどYasin Uludag's blogから学んでいます。
setData()は私には似ています。あなたはエラーがどこか他の人から来ていないと確信していますか? –
こんにちは@TimHoffmann、それは私が入力を押すと、セルの変更をコミットするときにエラーが発生するので、私の最初の推測です。前後に何もない。 QtのWebサイト(http://doc.qt.io/qt-4.8/qabstractitemmodel.html#setData)のドキュメントに再帰について言及するものは何もありません。 –
あなたは別の更新を誘発する可能性がある 'dataChanged'への任意のスロットを持っていますか? 'defのデータ(自己、インデックス、役割):データ()にdataChanged()の使用 –