Здравствуйте!
Столкнулся с такой проблемой. Есть объект QListView recordview. Для удаления записи из этого списка у меня есть кнопка. В определенном месте программы нужно решить, блокировать ли кнопку или не блокировать. Кнопку надо блокировать, если ни одна запись не выбрана.
Я пишу такой код
action_delete->setEnabled(false);
...
// Удаление записи
// Пункт активен только если запись (или записи) выбраны в списке
if(recordview->selectionModel()->hasSelection())
action_delete->setEnabled(true);
и натыкаюсь на ситуацию, когда в списке ничего не выбрано, а кнопка активна, причем вышеуказанный кусок кода гарантированно вызывался для обновления состояния кнопки.
Добавив дебаговый вывод увидел, что при hasSelection()==true количество выбранных строк может быть равно нулю (как??). Поэтому сделал совсем идиотскую вещь - расширил условие вот так
if(recordview->selectionModel()->hasSelection() &&
(recordview->selectionModel()->selectedRows()).size()>0)
action_delete->setEnabled(true);
и все стало работать правильно.
Вопрос. Как такое возможно, что при hasSelection()==true, количество выбранных строк равно нулю? Причем, на экране запись не выбрана ни синенькой засветкой, ни пунктирными линиями вокруг записи.