开发者

Connect double-click event of QListView with method in PyQt4

开发者 https://www.devze.com 2023-02-01 00:48 出处:网络
I’ve got a PyQt QListView object, and I want a method to run when it is double-clicked. This sh开发者_如何转开发ould be trivial, but it doesn\'t seem to work. My code is as follows:

I’ve got a PyQt QListView object, and I want a method to run when it is double-clicked. This sh开发者_如何转开发ould be trivial, but it doesn't seem to work. My code is as follows:

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!"

I’ve tried clicked() and entered() methods too, but they do not work either. These events are all listed in the documentation here.


It seems to work if:

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

Is replaced with the new syntax of:

lb.doubleClicked.connect(self.someMethod)

The latter is much more elegant too. I still do not know why the original syntax did not work, however.


It will also work if you use:

self.connect(lb,QtCore.SIGNAL("itemDoubleClicked (QListWidgetItem *)"),self.someMethod)

check the pyqt reference, then copy and paste the signal as is.

I know you already solved it. but I think knowing more than one method will be better.


itemDoubleClicked is a signal emitted by QListWidget and not QListView. I tested Moayyad Yaghi's suggestion and it did not work for me at least on Qt 4 with python 2.5

Though, lb.doubleClicked.connect(self.someMethod) works perfectly fine.

0

精彩评论

暂无评论...
验证码 换一张
取 消