拖拽放入KListWidget(PyQt / PyKde编程)

时间:2009-04-27 18:43:44

标签: drag-and-drop pyqt pykde plasmoid

我在PyQt / PyKde中开发了一个小应用程序(恰好是KDE4等离子体)。

在我的应用程序中,我有一个填充了一些行的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)

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

PyQt信号可以动态定义,因此只要定义了self.contacts_list_method()的类继承自QWidget,就可以发出动态信号。

例如,在contactsList对象中处理列表附加代码的方法的末尾:

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

然后在包含contactsList对象的类的初始化器中(或者您觉得哪里更好的地方)放置以下连接:

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

您还可以将QtCore.SIGNAL(“contacts_list_method_done()”)预定义为对象,然后在contacts_list_method中发出它时引用该对象。