QListView :: currentChanged() При подключении слот для сигнала QListView :: currentChanged (текущий, предыдущий) с помощью автоматического подключения я получаю:Решено: Qt 4.8.4: Невозможно подключиться слот для сигнала
QMetaObject::connectSlotsByName: No matching signal for on_modelosView_currentChanged(QModelIndex,QModelIndex)
Не с помощью автоматического подключения я получаю:
AttributeError: 'builtin_function_or_method' object has no attribute 'connect'
Я использую PySide и мой код выглядит следующим образом:
class Modelos(QtGui.QDialog):
def __init__(self, parent):
QtGui.QDialog.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
# Inicializa o modelo
self.model = ModelosModel(self)
self.ui.modelosView.setModel(self.model)
# Inicializa o mapper
self.mapper = QtGui.QDataWidgetMapper(self)
self.mapper.setModel(self.model)
self.mapper.addMapping(self.ui.modelosEdit, 0)
self.mapper.toFirst()
self.ui.modelosView.currentChanged.connect(self.onmodelosView_currentChanged)
@QtCore.Slot(QtCore.QModelIndex, QtCore.QModelIndex)
def onmodelosView_currentChanged(self, current, previous):
self.mapper.setCurrentIndex(current.row())
Где: ModelosModel - это подкласс QtAbstractListModel, а modelosView - виджет QListView.
Моя цель - использовать этот сигнал для обновления индекса mapper, чтобы пользователь мог выбрать элемент, который он хочет в QListView, и отредактировать его в QPlainTextEdit с помощью сопоставления.
Edit: Для того, чтобы очистить путаницы это код, который породил первую ошибку:
class Modelos(QtGui.QDialog):
def __init__(self, parent):
QtGui.QDialog.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
# Inicializa o modelo
self.model = ModelosModel(self)
self.ui.modelosView.setModel(self.model)
# Inicializa o mapper
self.mapper = QtGui.QDataWidgetMapper(self)
self.mapper.setModel(self.model)
self.mapper.addMapping(self.ui.modelosEdit, 0)
self.mapper.toFirst()
@QtCore.Slot(QtCore.QModelIndex, QtCore.QModelIndex)
def on_modelosView_currentChanged(self, current, previous):
self.mapper.setCurrentIndex(current.row())
я явно с помощью автоматического подключения функции, но я получил ошибку:
QMetaObject::connectSlotsByName: No matching signal for on_modelosView_currentChanged(QModelIndex,QModelIndex)
Edit 2 (Решение):
Хорошо, я проверял документы в десятый раз и понял, что QListView :: currentChanged (...) на самом деле является слотом , а не сигнал. Я просто создал собственный подкласс QListView с нужным сигналом и сделал currentChanged вместо этого.
Спасибо за помощь!
Я не знаю PySide _at all_, но разве вы не украсили метод onmodelosView_currentChanged (..) 'как слот, а не сигнал? – cmannett85
Предполагается, что это слот. Почему вы думаете, что это должен быть сигнал? –
«Нет соответствующего сигнала для on_modelosView_currentChanged (QModelIndex, QModelIndex)» – cmannett85