Вопрос

У меня есть 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 &)) );

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top