Соедините событие двойного щелчка 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(), но они тоже не работают. Все эти события перечислены в документации здесь.


person Paul    schedule 22.12.2010    source источник


Ответы (3)


Кажется, это работает, если:

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

Заменяется новым синтаксисом:

lb.doubleClicked.connect(self.someMethod)

Последний тоже намного элегантнее. Однако я до сих пор не знаю, почему исходный синтаксис не работал.

person Paul    schedule 22.12.2010

Это также будет работать, если вы используете:

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

проверьте ссылку pyqt, затем скопируйте и вставьте сигнал как есть.

Я знаю, что ты уже решил это. но я думаю, что знание более чем одного метода будет лучше.

person Moayyad Yaghi    schedule 31.12.2010
comment
Кажется, это не работает для меня в pyqt4. Я также пробовал self.connect(lb, SIGNAL('itemSelectionChanged()'), self.someMethod), но это тоже не работает. Это раздражает, так как теперь я хочу использовать сигнал нажатия клавиши, который, похоже, недоступен через lb.keyPressed. - person Paul; 01.02.2011

itemDoubleClicked — это сигнал, испускаемый QListWidget, а не QListView. Я проверил предложение Моайяда Яги, и оно не сработало для меня, по крайней мере, на Qt 4 с python 2.5.

Хотя lb.doubleClicked.connect(self.someMethod) работает отлично.

person Rahul Singh    schedule 13.03.2012
comment
Похоже, это исходит из QAbstractItemView: doc.qt.io/qt-5/qabstractitemview .html#двойной клик - person grego; 20.12.2019