QObject::connect проблемы с QAbstractItemModel

У меня есть 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, у меня есть cout в функции onText, но при изменении QListView ничего не печатается.


person David Menard    schedule 29.07.2009    source источник


Ответы (3)


Вероятно, это означает, что сигнал никогда не излучается. Попробуйте позвонить

модель->setData(модель->индекс(0, 0), Qt::EditRole, 3.14);

Если он не вызывает ваш слот, то реализация setData(), вероятно, ошибочна и не выдает dataChanged(QModelIndex,QModelIndex), или же customObject_ с тех пор был удален.

Если это не так, вам необходимо предоставить нам дополнительную информацию.

person Marc Mutz - mmutz    schedule 29.07.2009
comment
setData не вызывал мой слот, а customObject не удалялся, я попробую другой слот. Спасибо. - person David Menard; 29.07.2009
comment
Любые предложения по использованию? - person David Menard; 29.07.2009

может быть, и в вашей функции..

но если это была проблема, она должна отображать ошибку вашей функцией...


возможно этот сигнал не излучается. Попробуйте подключиться с другим сигналом.. можете проверить так..

person ufukgun    schedule 29.07.2009

Вы пробовали с

QObject::connect(model, SIGNAL(dataChanged (const QModelIndex &, const QModelIndex &) ),
                    customObject_,SLOT(onText(const QModelIndex &, const QModelIndex &)) );

? aka убедитесь, что параметры передаются по ссылке. Ознакомьтесь с этим руководством.

person OneOfOne    schedule 29.07.2009
comment
OP упомянул QObject::connect(), возвращает true. - person Marc Mutz - mmutz; 29.07.2009