Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: xintrea от Октябрь 30, 2010, 22:11



Название: [Сносите, разрешаю] QListView - не обновляется selectionModel() после reset()
Отправлено: xintrea от Октябрь 30, 2010, 22:11
Здравствуйте!


У меня такая проблема.

Есть объект, унаследованный от QListView - recordview.
И есть объект, унаследованный от QAbstractListModel - recordtablemodel.
Они связаны по принципу interview.

Когда в интерфейсе программы удаляется последняя запись в списке (то есть, список становится пустым), вызывается следующий код:

Код
C++ (Qt)
void recordtablemodel::update(void)
{
qDebug() << "recordtablemodel::update() : Reset";
 
// Модель информирует вид о том, что данные были изменены
// При этом перестроится весь список на экране
reset();
}

А затем вызывается код:

Код
C++ (Qt)
qDebug() << "Tools update";
 
if(recordview->selectionModel()->hasSelection())
  qDebug() << "In table select present";
else
  qDebug() << "In table select non present";

В логе вижу следующее:

Цитировать
recordtablemodel::update() : Reset
Tools update
In table select present

Вопрос. Откуда в recordview есть какой-то выбор, если в моделе нет ни одной записи, и модель вызывала метод reset(); ?


Название: Re: QListView - не обновляется состояние selectionModel() после reset() в данных
Отправлено: xintrea от Октябрь 31, 2010, 18:19
Хм, действительно бредятина.

Удаление строк в QListView переделал вообще один в один по классическому принципу interview, с beginRemoveRows()/endRemoveRows(), убрал reset().

И всеравно, после удаления последней записи, selectionModel()->hasSelection() возвращает true. Как оно может быть true, если записей не осталось - не ясно.


Название: Re: QListView - не обновляется состояние selectionModel() после reset() в данных
Отправлено: xintrea от Октябрь 31, 2010, 18:35
Не, всенормально. Это я накосячил.