Python 将QListView的双击事件与PyQt4中的方法连接
我有一个PyQtPython 将QListView的双击事件与PyQt4中的方法连接,python,qt,qt4,pyqt,pyqt4,Python,Qt,Qt4,Pyqt,Pyqt4,我有一个PyQtQListView对象,我希望双击它时运行一个方法。这应该是微不足道的,但它似乎不起作用。我的代码如下: class MainWindow(QMainWindow): def __init__(self): QMainWindow.__init__(self) lb = QListView() self.connect(lb, SIGNAL('doubleClicked()'), self.someMethod)
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()
方法,但它们也不起作用。这些事件都列在中。如果:
self.connect(lb, SIGNAL('doubleClicked()'), self.someMethod)
替换为以下新语法:
lb.doubleClicked.connect(self.someMethod)
后者也要优雅得多。但是,我仍然不知道为什么原始语法不起作用。如果您使用:
self.connect(lb,QtCore.SIGNAL("itemDoubleClicked (QListWidgetItem *)"),self.someMethod)
检查pyqt参考,然后按原样复制并粘贴信号
我知道你已经解决了。但是我认为知道不止一种方法会更好。
itemDoubleClicked
是由QListWidget
发出的信号,而不是QListView
。我测试了Moayyad Yaghi的建议,但至少在使用Python2.5的Qt4上它对我不起作用
不过,
lb.doubleClicked.connect(self.someMethod)
工作得非常好。这在pyqt4中似乎不适用。我还尝试了self.connect(lb,SIGNAL('itemSelectionChanged()')、self.someMethod),但这也不起作用。这很烦人,因为我现在想使用按键信号,它似乎无法通过lb.keypressed获得。看起来它来自QabstractemView: