2016-05-31 3 views
-1

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から学んでいます。

+0

setData()は私には似ています。あなたはエラーがどこか他の人から来ていないと確信していますか? –

+0

こんにちは@TimHoffmann、それは私が入力を押すと、セルの変更をコミットするときにエラーが発生するので、私の最初の推測です。前後に何もない。 QtのWebサイト(http://doc.qt.io/qt-4.8/qabstractitemmodel.html#setData)のドキュメントに再帰について言及するものは何もありません。 –

+0

あなたは別の更新を誘発する可能性がある 'dataChanged'への任意のスロットを持っていますか? 'defのデータ(自己、インデックス、役割):データ()にdataChanged()の使用 –

答えて

0

私はdataChanged()という別のインスタンスがあるかどうかを尋ねた@TimHoffmannのコメントに出てきます。それはdata()の中で使用していました。

関連する問題