Pregunta

Tengo un diccionario de tuple: pares de nombres. Muestro los nombres en un qlistwidget, pero recupero y trabajo con las tuplas: los nombres son estrictamente para fines de visualización. La línea SetFlags en el siguiente código me permite editar los nombres de la pantalla, pero lo que realmente quiero poder hacer es editar los datos de tupla. Intenté agregar el bit Qt.editrole, pero terminé con nada más que líneas en blanco en QListWidget para mis problemas. ¿Cómo puedo dejar que el usuario edite los datos de la tupla (a través de la interfaz de usuario) y luego hacer que mi código consulte el diccionario para actualizar el nombre de la pantalla?

for tuple in tuples:
    name = dict[tuple]
    this_item = QListWidgetItem(name)
    this_item.setData(Qt.UserRole,tuple)
#   this_item.setData(Qt.EditRole, tuple)
    this_item.setFlags(this_item.flags() | Qt.ItemIsEditable)
    self.addItem(this_item)
¿Fue útil?

Solución

Para editar los datos detrás del nombre, agregaré un método dentro de mi qlistwidget que crea un entorno de edición personalizado:

def edit_items(self):
    dialog = MyQDialog(self.parent())
    table = QTableWidget(self.count(),2,dialog)
    for row in range(0, self.count()):
        spec = repr(self.item(row).data(32).toPyObject())
        name = self.item(row).text()
        spec_item = QTableWidgetItem(spec)
        name_item = QTableWidgetItem(name)
        table.setItem(row,0,name_item)
        table.setItem(row,1,spec_item)
    layout = QHBoxLayout()
    layout.addStrut(550)
    layout.addWidget(table)
    dialog.setLayout(layout)
    dialog.show()

Y luego ve desde allí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top