-1

我正在 PyQt/PyKde 中开发一个小应用程序(准确地说是 KDE4 plasmoid)。

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

任何帮助将不胜感激

4

1 回答 1

0

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

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

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 中发出它时仅引用该对象。

于 2009-04-28T11:21:48.923 回答