Здравствуйте, гость ( Вход | Регистрация )
Алексей1153 | Дата 29.11.2013, 13:35 |
Может быть есть какой-нибудь другой способ запретить добавлять одинаковые данные в таблицу? конечно есть - ассоциативный массив с уникальным ключом В такой массив в принципе невозможно записать два одинаковых ключа |
|
pau | Дата 29.11.2013, 12:20 |
1. А тебя не смущает то, что result становится равен true, когда найдётся элемент, содержащий value? Я так понимаю, что findItem() возвращает -1, когда ни у одного элемента не найдётся value - случай, когда надо разрешить установку нового значения, то есть:
согласен. у меня просто немного сложнее сделано, когда переносил забыл поправить :) 2. На всякий случай проверяй валидность индекса if(index.isValue()), а то налетишь на кучу неприятностей. естессно - там где точечки стоят, там и проверяю :) 3.
Для emit не нужно скобок . вроде бы можно и так - мне лично так как-то приятнее А без этого сигнала редактирование прекращается? Возможно, делегат, отвечающий за редактирование элемента, ещё не отработал до конца, а ты его снова пинаешь. действительно - дело в том, что на момент вызова QTableView находится еще в режиме редактирования. Так что надо просто добавить Qt::QueuedConnection при соединении с соответствующим сигналом:
Все работает! Большое спасибо! |
|
Анна | Дата 29.11.2013, 9:52 |
1. А тебя не смущает то, что result становится равен true, когда найдётся элемент, содержащий value? Я так понимаю, что findItem() возвращает -1, когда ни у одного элемента не найдётся value - случай, когда надо разрешить установку нового значения, то есть: result = findItem( value.toString() ) == -1; 2. На всякий случай проверяй валидность индекса if(index.isValue()), а то налетишь на кучу неприятностей. 3. emit( dataChanged( index, index ); ... emit ( dataInvalid( index ) ); Для emit не нужно скобок . А без этого сигнала редактирование прекращается? Возможно, делегат, отвечающий за редактирование элемента, ещё не отработал до конца, а ты его снова пинаешь. |
|
pau | Дата 28.11.2013, 18:00 |
Добрый день. Хочу запретить добавлять одинаковые данные в таблицу. Делаю следующим образом (class MyModel : public QAbstractTableModel):
Теперь надо отловить этот сигнал и вернуть ячейку таблицы (QTableView *myTableView) обратно в режим редактирования:
Но во время выполнения таблица обратно в режим редактирования не переходит а в консоли я получаю сообщение:
Что я делаю неправильно? Может быть есть какой-нибудь другой способ запретить добавлять одинаковые данные в таблицу? Заранее большое спасибо за ответы. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 20.4.2024, 15:14 |