Frage

Ich habe ein Wörterbuch von Tuple: Namenspaare. Ich zeige die Namen in einem Qlistwidget an, aber ich rufe und arbeite mit den Tupeln ab - die Namen dienen streng für Anzeigezwecke. Die SETFLAGS -Zeile im folgenden Code ermöglicht es mir, die Anzeigennamen zu bearbeiten. Ich möchte jedoch tatsächlich die Tupeldaten bearbeiten. Ich habe versucht, das Bit Qt.Editrol hinzuzufügen, hatte aber nur leere Zeilen im Qlistwidget, um meine Probleme zu haben. Wie kann ich den Benutzer die Tuple -Daten (über die Benutzeroberfläche) bearbeiten lassen und dann meinen Code das Wörterbuch abfragen lassen, um den Anzeigenamen zu aktualisieren?

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)
War es hilfreich?

Lösung

Um die Daten hinter dem Namen zu bearbeiten, füge ich eine Methode in meinem QListWidget hinzu, die eine benutzerdefinierte Bearbeitungsumgebung erstellt:

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()

Und dann gehen Sie von dort aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top