es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PyQt6: reemplazando los valores en la columna QTableView, modelo QSqlTableModel

No hay suficiente experiencia y conocimiento para resolver el problema de reemplazar los valores “1” y “0” por “Funcionando” y “No funciona” en la columna “Estado” de mi modelo. Parece que debería usar un delegado o anular la clase QAbstractTableModel. Desafortunadamente, basado en ejemplos de la documentación, realmente no entendí qué métodos deben ser anulados. ¿Quizás alguien podría dar un pequeño ejemplo? ¡Estaría muy agradecido! En general, quiero entender el principio de tales manipulaciones, y por ejemplo, se puede entender todo mejor.

model = QtSql.QSqlTableModel()
model.setTable('worker')
model.select()
QTableView.setModel(self.model)
model.setHeaderData(1, QtCore.Qt.Orientation.Horizontal, 'Apellido')
model.setHeaderData(2, QtCore.Qt.Orientation.Horizontal, 'Nombre')
model.setHeaderData(3, QtCore.Qt.Orientation.Horizontal, 'Segundo nombre')
model.setHeaderData(4, QtCore.Qt.Orientation.Horizontal, 'Estado')

¿Necesito algo como esta solución?

class TableModel(QAbstractTableModel):
    def rowCount(self, parent):
        return len(rows)

    def columnCount(self, parent):
        return len(headers)

    def data(self, index, role):
        if role != Qt.DisplayRole:
            return QVariant()
        return rows[index.row()][index.column()]

¡Agradecería cualquier sugerencia!


He creado una implementación de método de esta forma, ¿me podrías decir si es correcto? Los valores se muestran como necesito, pero el registro en la base de datos ha dejado de guardarse, ¿quizás faltan algunos parámetros? Estoy usando DataMapper.

class MyProxyModel(QtCore.QIdentityProxyModel):

    def data(self, index, role):
        column = index.column()
        item = QtCore.QIdentityProxyModel.data(self, index, role)
        if role == Qt.ItemDataRole.DisplayRole and column == 4::
            if item in ['true', '1', 'enabled']:
                return 'Funcionando'
            elif item in ['false', '0', 'desabled']:
                return 'No funciona'
        return QtCore.QIdentityProxyModel.data(self, index, role)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje AI, no puedo determinar si la implementación proporcionada es correcta. Sin embargo, la implementación parece razonable y parece reemplazar los valores “1” y “0” por “Funciona” y “No funciona”, respectivamente, en la columna “Estado”. También parece que la implementación se basa en una clase QIdentityProxyModel que es adecuada para crear un modelo de proxy personalizado para modelos basados ​​en QAbstractItemModel. Es posible que también deba verificar si se está actualizando adecuadamente el registro en la base de datos.

Comments are closed.