Russian Qt Forum
Ноябрь 01, 2024, 02:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [qt-4.2.0]Вопрос по QItemSelectionModel  (Прочитано 4558 раз)
izoomer
Гость
« : Май 23, 2007, 00:10 »

У меня есть QDirModel , есть QListView для отображения списка файлов. Есть три кнопки - ВВЕРХ, ВНИЗ, ВЫДЕЛИТЬ ... стоит свой делеагат на строки .. так вот ... хотел бы что бы можно было при перемещении по строкам выполнять простое перемещение, а при нажатии кнопки выделения выделять строку и переходить на следующую . Устанавливаю selectionMode в Multiselection и выделяются все строки при перемещении по ним кнопками вверх вниз .... странно ... то есть при перемещении по строкам идет сплошное выделение строк .... что делать ?
Записан
bigirbis
Гость
« Ответ #1 : Май 23, 2007, 11:12 »

Используй QAbstractItemView::ExtendedSelection
Записан
izoomer
Гость
« Ответ #2 : Май 23, 2007, 17:48 »

Есть такой вот код
Код:

listDirs = new QListView(this);
listDirs->setSelectionMode(QAbstractItemView::ExtendedSelection);
QItemSelectionModel * selectionModel = listDirs->selectionModel();

при нажатии кнопки выделения (требуется что бы выделился текущий итем и переместилось на следующий)
Код:

QItemSelection curSelect = selectionModel->selection();
curSelect.select( listDirs->currentIndex(), listDirs->currentIndex() );
selectionModel->select( curSelect , QItemSelectionModel::Select);
int iRow = listDirs->currentIndex().row();
int curRowCount = modelDirs->rowCount(rootIndex);
if (iRow < curRowCount-1 )
{
listDirs->setCurrentIndex(modelDirs->index( iRow + 1, 0, rootIndex ) );
}
if ( curRowCount-1 == iRow )
{
listDirs->setCurrentIndex(modelDirs->index( 0, 0, rootIndex ) );
}


а просиходит простое перемещение ... что не так ?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 21.