Форум сайта python.su
Всем доброго времени суток. У меня возникла проблема с сабжем. Наверное просто что-то не так понял по этой теме.
Есть код:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys, os
from mainwindow_ui import *
class mainwindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self)
self.setupUi(self)
self.connect(self.leftListWidget, QtCore.SIGNAL('doubleClicked(QModelIndex)'), self, QtCore.SLOT('itemClicked(item)'))
self.connect(self.exitButton, QtCore.SIGNAL('clicked()'), self.exitAction)
self.updateLeftList(os.path.expanduser("~"))
self.updateRightList(os.path.expanduser("~"))
def updateLeftList(self, directory):
files = os.listdir(directory)
for f in files:
self.leftListWidget.addItem(f)
def updateRightList(self, directory):
files = os.listdir(directory)
for f in files:
self.rightListWidget.addItem(f)
def itemClicked(self, item):
messageBox = QMessageBox(self)
messageBox.setText("Hello")
messageBox.show()
def exitAction(self):
self.close()
Офлайн
Ну это очень просто…
дело в том, что метод itemClicked(self, item) не является слотом этого объекта. чтобы все работало надо написать:
self.connect(self.leftListWidget, QtCore.SIGNAL('doubleClicked(QModelIndex)'), self.itemClicked)
ну и помнить, что вместо item метод получит объект класса QModelIndex, его можно внутри метода превратить в item.
Офлайн
Рекомендую освоить новый способ соединения слотов-сигналов. В данном случае вот так:
self.leftListWidget.doubleClicked.connect(self.itemClicked)
Офлайн
Спасибо, все работает.
Офлайн
pasaranaxВ таком случае метод itemClicked тоже получит QModelIndex в качестве параметра?
Рекомендую освоить новый способ соединения слотов-сигналов. В данном случае вот так:self.leftListWidget.doubleClicked.connect(self.itemClicked)
Офлайн
reiДа, результат аналогичен старому способу, просто “параметры” не указываются.
В таком случае метод itemClicked тоже получит QModelIndex в качестве параметра?
Отредактировано (Окт. 14, 2009 19:12:46)
Офлайн
а это self.leftListWidget.doubleClicked.connect с какой версии работает?
Офлайн
Митричс 4.5, забыл сказать
а это self.leftListWidget.doubleClicked.connect с какой версии работает?
Офлайн