0

PyQt でQTableModel使用して表示しているカスタムがあります。QTableView一部のフィールドをチェック可能に設定しており、[すべてチェック] ボタンと [チェックなし] ボタンを追加したいと考えています。setData()で既に記述したコードだけでなく、チェック済みの状態も変化するように、コードから を呼び出す方法が必要だと思いますsetData()。実際にこれを行う方法はありますか?

要求に応じて、私が使用している setData は次のとおりです。

if role == Qt.CheckStateRole:
        row = index.row()
        column = index.column()

        if row == 0 and column != 0:
            self._data.parsingConfiguration['columnEnabled'][column-1] = True if value == Qt.Checked else False
            self.dataChanged.emit(self.createIndex(1, column), self.createIndex(len(self._data.data),column))

            if column-1 == self._data.parsingConfiguration['groupNumberColumn']:
                self.setGroupNumber(self.getFirstEnabledMember())
            elif column-1 == self._data.parsingConfiguration['timeStepColumn']:
                self.setTimeStep(self.getFirstEnabledMember())
            self.emit(SIGNAL("layoutChanged()"))
            return True
        if column == 0 and row != 0:
            self._data.parsingConfiguration['rowEnabled'][row-1] = True if value == Qt.Checked else False
            self.dataChanged.emit(self.createIndex(row, 1), self.createIndex(row, self._data.numColumns+1))
            return True
        return False
4

1 に答える 1

0

もう少し試行錯誤した後、データ関数が QCheckState に戻ったことを通知するデータを変更し、モデルから layoutChanged() シグナルを発行できることを発見しました。これでも setData メソッドは呼び出されず、別の関数を作成する必要がありました (したがって、当初の目標は達成されませんでした) が、ユーザーの観点からは望ましい結果が得られます。

于 2012-08-23T14:29:35.710 に答える