crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

pau
  опции профиля:
сообщение 28.11.2013, 18:00
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 28.11.2013
Пользователь №: 3989

Спасибо сказали: 5 раз(а)




Репутация:   0  


Добрый день.
Хочу запретить добавлять одинаковые данные в таблицу. Делаю следующим образом (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


Что я делаю неправильно? Может быть есть какой-нибудь другой способ запретить добавлять одинаковые данные в таблицу?
Заранее большое спасибо за ответы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 15.3.2025, 11:02