Проблемы QObject::connect с QAbstractItemModel
-
20-09-2019 - |
Вопрос
У меня есть QListView, из которого я получаю QAbstractItemModel с помощью list->model();
После этого я хочу подключить сигнал dataChanged к моему пользовательскому QObject:
if( QObject::connect(model, SIGNAL(dataChanged (const QModelIndex , const QModelIndex ) ),
customObject_,SLOT(onText(const QModelIndex , const QModelIndex )) ) )
cout << "SIGNAL SLOT connection successful" << endl;
else
cout << "SIGNAL SLOT connection ERROR" << endl;
вот мой пользовательский объект:
class CustomObject : public QObject
{
Q_OBJECT
public:
CustomObject (QObject *parent);
~CustomObject ();
public slots:
void onText(const QModelIndex & topLeft, const QModelIndex & bottomRight );
private:
};
Я делаю что-то не так?Вызов QObject возвращает true, у меня есть ошибка в функции onText, но при изменении QListView ничего не печатается.
Решение
Вероятно, это означает, что сигнал никогда не излучается.Попробуйте позвонить
модель->setData(модель->index(0, 0), Qt::EditRole, 3.14);
Если этот не вызывает ваш слот, то реализация setData()
вероятно, глючит и не выдает dataChanged(QModelIndex,QModelIndex)
, или еще customObject_
с тех пор был удален.
Если это не так, вам необходимо предоставить нам дополнительную информацию.
Другие советы
возможно, в вашей функции есть &..
но если это была проблема, ваша функция должна отображать ошибку...
вероятно, этот сигнал не излучается.Попробуйте подключиться к другому сигналу..можно проверить так..
Вы пробовали с
QObject::connect(model, SIGNAL(dataChanged (const QModelIndex &, const QModelIndex &) ),
customObject_,SLOT(onText(const QModelIndex &, const QModelIndex &)) );
?иначе говоря, убедитесь, что параметры передаются по ссылке.Проверять этот урок.