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