我有一个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。
答案 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参考,然后按原样复制并粘贴信号。
我知道你已经解决了。但我认为了解不止一种方法会更好。