コード例 #1
0
    def createEditor(self, parent, options, index: QModelIndex):
        model = index.model()  # type: EditableTableModel
        if not model.is_discrete(index.column()):
            return super().createEditor(parent, options, index)

        vals = model.discrete_vals(index.column())
        edit = QLineEdit(parent)
        edit.setCompleter(QCompleter(vals, edit, filterMode=Qt.MatchContains))

        def save():
            if edit.text():
                model.setData(index, edit.text())

        edit.editingFinished.connect(save)
        return edit
コード例 #2
0
 def data(self, index: QModelIndex, role=None):
     value = self._table[index.row()][index.column()]
     if role == Qt.DisplayRole and value is not None:
         return str(value)
     elif role == Qt.TextAlignmentRole:
         return Qt.AlignVCenter | Qt.AlignLeft
コード例 #3
0
 def setData(self, index: QModelIndex, value: str, role=None):
     value = None if not value else value
     self._table[index.row()][index.column()] = value
     self.dataChanged.emit(index, index)
     return True