2009-04-27 48 views
-1

我正在PyQt/PyKde中開發一個小應用(正是它是一個KDE4 plasmoid)。在KListWidget中拖放(PyQt/PyKde編程)

在我的應用我有充滿一些行KListWidget,看到這樣的畫面:

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

我需要實現列表的行拖拽&下降動作,比如我應該能夠將任何文件放在一行上,然後應用程序將此文件發送到列表中的名稱。

名單已創建的這個代碼片段:

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

方法時,拖動&下降的情況是已經實現的,我只需要方法連接到列表中類似的方式來調用:

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

任何幫助將理解

+0

你能說清楚究竟是什麼已經實施?此外,你想要「連接」到列表的方法是什麼?你的意思是Qt信號/插槽連接? – 2009-04-28 00:03:19

回答

0

PyQt的信號可以被動態地定義,所以只要限定self.contact類s_list_method()從QWidget繼承,它可以發出一個動態信號。

例如,在在處理您的列表附加代碼contactsList對象方法的末尾:在持有contactsList對象(或任何你覺得這個類的初始化

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

然後是更好的地方)提出以下連接:

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

你也可以預先定義QtCore.SIGNAL(「contacts_list_method_done()」)作爲對象,然後只是參考對象,當你在contacts_list_method發射它。

+0

這種方式不起作用,但我已經解決了使用qtreewidget而不是klistw – Giancarlo 2009-04-29 14:18:33