Хочу запретить добавлять одинаковые данные в таблицу. Делаю следующим образом (class MyModel : public QAbstractTableModel):
bool MyModel::setData( const QModelIndex &index, const QVariant &value, int role )
{
bool result = false;
...
// Get item by given index
MyItem *myItem = getMyItem( index.row() );
...
switch ( index.cloumn() )
{
case 0: // Text field
// Test if my model already has the same data
result = findItem( value.toString() ) != -1;
if ( result ) myItem->setTextField( value.toString() );
break;
...
}
...
if ( result )
emit( dataChanged( index, index );
else
emit ( dataInvalid( index ) );
return result;
}
Теперь надо отловить этот сигнал и вернуть ячейку таблицы (QTableView *myTableView) обратно в режим редактирования:
void MyWindow::dataInvalid( const QModelIndex &index )
{
myTableView->edit( index );
}
Но во время выполнения таблица обратно в режим редактирования не переходит а в консоли я получаю сообщение:
edit: edit failed
Что я делаю неправильно? Может быть есть какой-нибудь другой способ запретить добавлять одинаковые данные в таблицу?
Заранее большое спасибо за ответы.