Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将QListView的双击事件与PyQt4中的方法连接_Python_Qt_Qt4_Pyqt_Pyqt4 - Fatal编程技术网

Python 将QListView的双击事件与PyQt4中的方法连接

Python 将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)

我有一个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()
方法,但它们也不起作用。这些事件都列在中。

如果:

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: