将QListView的双击事件连接到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()
这些方法,但它们也不管用。这些事件都在这里的文档中列出了。
3 个回答
1
itemDoubleClicked
是由 QListWidget
发出的信号,而不是 QListView
。我测试了 Moayyad Yaghi 的建议,但在 Qt 4 和 Python 2.5 上对我来说没有用。
不过,lb.doubleClicked.connect(self.someMethod)
运行得非常好。
3
如果你使用以下代码,也会有效:
self.connect(lb,QtCore.SIGNAL("itemDoubleClicked (QListWidgetItem *)"),self.someMethod)
查看一下pyqt的参考资料,然后直接复制粘贴信号的内容。
我知道你已经解决了这个问题,但我觉得了解多种方法会更好。
13
看起来如果这样做就能正常工作:
self.connect(lb, SIGNAL('doubleClicked()'), self.someMethod)
可以用新的写法替换成:
lb.doubleClicked.connect(self.someMethod)
后者看起来也更简洁。不过,我还是不明白为什么原来的写法不行。