Δημοσιεύτηκε: 04 Σεπ 2011, 03:57
από pmav99
Δεν είμαι σίγουρος ότι καταλαβαίνω ακριβώς τι έχεις στο μυαλό σου.

Έχεις μια βάση δεδομένων με εγγραφές. Συνδέεσαι σε αυτή και διαβάζεις τα ονοματεπώνυμα τα οποία και εμφανίζεις στο QListWidget. Όταν ο χρήστης διαλέγει μία επαφή εκπέμπεται αυτό το signal. Το κάνεις bind λοιπόν σε μία μέθοδο η οποία κάνει αυτά που θέλεις/χρειάζεσαι (πχ ανάγνωση του ονοματεπώνυμου, query στη λίστα για τα υπόλοιπα στοιχεία και εμφάνιση στο δεξιά widget). Αν δεν κάνω λάθος, το ονοματεπώνυμο δεν το διαβάζεις άμεσα. Αυτό που διαβάζεις από το QListWidget είναι μία instance της QListWidgetItem. Το ονοματεπώνυμο το διαβάζεις μέσα από τo Item.

Όταν θέλεις να προσθέσεις μία καινούρια εγγραφή στη βάση δεδομένων αυτό θα το κάνεις μέσω ξεχωριστής φόρμας. Θα έχεις δηλαδή δύο φόρμες. Μία για προσθήκη επαφών και μία για εμφάνιση των στοιχείων των υπάρχουσων επαφών. Μπορείς με το που θα προσθέτεις μια επαφή να ανανεώνεις και το QListWidget (για να μην ξαναδιαβάζεις όλες τις τιμές της βάσες δεδομένων).

έγραψε:Πως όμως θα καταλαβαίνω σε ποια επαφή αντιστοιχίζεται το κάθε item της λίστας, ώστε να εμφανίζω τα στοιχεία της;

Δεν τα έχω δοκιμάσει τα παρακάτω. Απλά μία ιδέα.

Ένας τρόπος είναι να κάνεις subclass το QListWidgetItem ώστε να του δίνεις ακόμα ένα attribute το οποίο θα αντιστοιχεί στο unique key της λίστας σου.
Κώδικας: Επιλογή όλων

def MyQListWidgetItem(QListWidgetItem):
def __init__(self, text, parent, unique_key):
super(MyQListWidgetItem, self).__init__(text, parent)

self.unique_key = unique_key

Κώδικας: Επιλογή όλων

list_widget = QListWidget( args)

for item in DataBase:
name = item.name
surname = item.surname
unique_key = item.unique_key
list_widget.addItem(MyQListWidgetItem( name + surname, parent, unique_key)

Όταν λοιπόν θα διαλέγει ο χρήστης ένα Item του QListWidget, θα διαβάζεις το currentItem που είναι ένα MyQListWidgetItem το οποίο έχει σαν attribute το unique_key.

Eλπίζω να είναι κατανοητό