qt слоты и автоподключение сигналов

Я использую Qt 5.2.1. Я прочитал это и это - это не распространяется на мой случай. У меня есть QSqlTableModel и окно, которое его использует. Я хочу отреагировать на его сигнал dataChanged:

void QAbstractItemModel::​dataChanged(const QModelIndex & topLeft, const QModelIndex & bottomRight, const QVector<int> & roles = QVector<int> ())

Поэтому я инициализирую модель в моем конструкторе windowClass следующим образом:

kontrahentModel = new QSqlTableModel(this);

И вот объявление слота:

void on_kontrahentModel_dataChanged(const QModelIndex & topLeft, const QModelIndex & bottomRight, const QVector<int> & roles = QVector<int> ());

То же количество аргументов, но это приводит к печально известному

QMetaObject::connectSlotsByName: Нет соответствующего сигнала для (...)

Что я пропустил? Это работает только для сигналов GUI?


person murison    schedule 15.01.2015    source источник


Ответы (1)


Я исправил это случайно, когда писал этот вопрос ... В моей модели отсутствовало имя. Когда я добавил

kontrahentModel->setObjectName("kontrahentModel");

Все работало как шарм...

НО - "розы без шипа не бывает". При назначении родителя для модели возвращается старая проблема, описанная здесь: QSqlQueryModel с родителем - сбой приложения

person murison    schedule 15.01.2015