使用PyQt4中的方法连接QListView的双击事件

时间:2010-12-22 17:34:24

标签: python qt qt4 pyqt pyqt4

我有一个PyQt QListView对象,我想要一个双击时运行的方法。这应该是微不足道的,但它似乎不起作用。我的代码如下:

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        lb = QListView()
        self.connect(lb, SIGNAL('doubleClicked()'), self.someMethod)

        grid = QGridLayout()
        grid.addWidget(lb, 0, 0)
        centralWidget.setLayout(grid)

    def someMethod(self):
        print "It happened!"

我也尝试了clicked()entered()方法,但它们也不起作用。这些事件都列在documentation here

2 个答案:

答案 0 :(得分:12)

似乎有效:

self.connect(lb, SIGNAL('doubleClicked()'), self.someMethod)

替换为新语法:

lb.doubleClicked.connect(self.someMethod)

后者也更优雅。但我仍然不知道为什么原始语法不起作用。

答案 1 :(得分:3)

如果使用:

,它也会起作用
self.connect(lb,QtCore.SIGNAL("itemDoubleClicked (QListWidgetItem *)"),self.someMethod)

检查pyqt参考,然后按原样复制并粘贴信号。

我知道你已经解决了。但我认为了解不止一种方法会更好。