1

QTableView.selectionModel() の呼び出しに問題があります。別のクラスで QTableView をインスタンス化してから、新しいプロジェクトを開いてビューに入力する必要があるときに、とりわけデータを取得する関数 fillGrid() を呼び出します。これは、selectionModel() メソッドを呼び出す場所でもあります。

最初に電話したときはすべてうまくいきます。しかし、プログラムの同じインスタンスで再度呼び出そうとすると、次のエラーが発生します。

TypeError: 'QItemSelectionModel' オブジェクトは呼び出し可能ではありません

私の関数fillGridは次のようになります:

def fillGrid(self):

    self.infos = select.getInfosProject(self.parent.db, self.parent.currentProj)
    self.getData()
    header = ["id","hidden","state","filename","asset-shot name","task","buffer","pass","camera","version","user","date","deps","check","comment","start frame","end frame","missing frames","edit start frame","edit end frame"]
    self.model = SequenceGridModel(self.data, header, self)
    self.setModel(self.model)


    self.hideColumn(0)
    self.hideColumn(1)
    font = QtGui.QFont("Verdana", 8)
    self.setFont(font)
    vh = self.verticalHeader()
    vh.setVisible(False)
    hh = self.horizontalHeader()
    hh.setStretchLastSection(True)
    self.resizeColumnsToContents()

    self.setSelectionBehavior(QtGui.QTableView.SelectRows)
    self.selectionModel = self.selectionModel()
    self.connect(self.selectionModel, QtCore.SIGNAL("selectionChanged(QItemSelection, QItemSelection)"), self.getSelection)
    self.setSortingEnabled(True)


    self.setEditTriggers(QtGui.QAbstractItemView.CurrentChanged)
    self.viewport().installEventFilter(self)
    self.setItemDelegateForColumn(13,ComboBoxDelegate(self, self.checkValues))

    self.setColumnWidth(13, 64)

なぜこれが起こっているのですか?前もって感謝します

4

1 に答える 1

2

QItemSelectionModel インスタンスを selectionModel という名前に割り当てましたが、selectionModel は QTableView クラスのメソッドです。選択モデルの新しい名前を選択する必要があります。QAbstractItemViewクラス リファレンス を参照してください。

その選択モデルをモデルに適用するように割り当てたい場合は、setSelectionModel メソッドを使用する必要があります。

于 2011-05-09T18:20:47.837 に答える