2009-04-27 10 views
-1

Je développe une petite application (précisément un plasmoïde KDE4) dans PyQt/PyKde.Drag & Drop dans KListWidget (programmation PyQt/PyKde)

Dans mon application, j'ai un KListWidget rempli de quelques lignes, voir cette image:

http://img212.imageshack.us/img212/8444/sshot3.jpg

je dois mettre en œuvre une action de glisser-déposer & pour les lignes de la liste, par exemple, je devrais pouvoir mettre un fichier sur une ligne, puis l'application va envoyer ce fichier au nom sur la liste.

La liste a été créée par ce bout de code:

self.contactsList = KListWidget() 
self.contactsList.setFrameShape(QFrame.StyledPanel) 
self.contactsList.setFrameShadow(QFrame.Sunken) 
self.contactsList.setIconSize(QSize(35, 35)); 

Méthode à appeler lorsque glisser & drop passe est déjà mis en œuvre, j'ai besoin que de connecter la méthode à la liste d'une manière similaire à:

self.connect(self.contactsList, SIGNAL("signal_()"), self.method) 

Toute aide sera appréciée

+0

Pourriez-vous clarifier ce qui a déjà été implémenté? Aussi, quelle méthode voulez-vous "connecter" à la liste? Voulez-vous dire une connexion signal/slot Qt? –

Répondre

0

signaux PyQt peuvent être définis de manière dynamique, afin que la classe qui définit self.contact s_list_method() hérite de QWidget, il peut émettre un signal dynamique.

Par exemple, à la fin de la méthode dans l'objet Liste des contacts qui gère votre liste Code annexant:

def contacts_list_method(self, someparameters): 
    doStuff() 
    doMoreStuff() 
    ... 
    self.emit(QtCore.SIGNAL("contacts_list_method_done()")) 

Puis, dans la initialiseur de la classe qui détient l'objet Liste des contacts (ou chaque fois que vous vous sentez est un meilleur) a mis la connexion suivante:

self.connect(self.contactsList, SIGNAL("contacts_list_method_done()"), self.method) 

vous pouvez également prédéfinir le QtCore.SIGNAL (« contacts_list_method_done() ») comme un objet et puis juste référence à l'objet lorsque vous émettez dans contacts_list_method.

+0

de cette façon ne fonctionne pas, mais j'ai résolu en utilisant un qtreewidget au lieu de la klistw – Giancarlo

+0

Vous devriez publier ce que vous avez réellement fait comme une réponse et sélectionnez-le comme la bonne réponse (sauf si c'est le code confidentiel de l'entreprise évidemment). J'imagine que beaucoup de gens voudront le comportement que vous avez décrit à un moment donné :) –

Questions connexes