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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [QT-4.2.0 Linux] вопрос по QItemSelectedModel  (Прочитано 6641 раз)
izoomer
Гость
« : Июнь 13, 2007, 22:21 »

У меня в программе в QListView навигация ВВЕРХ ВНИЗ производится при помощи setCurrentIndex() .... на экране есть кнопка переключатель ... если кнопка нажата то просто перемещение делаю по строкам вверх или вниз, если отжата то нужно делать выделение строк при перемещении по ним ... подскажите как сделать .... уже перепробывал разные методы , а вот с setCurrentIndex чего то не ужается подружить выделение ....
Записан
SABROG
Гость
« Ответ #1 : Июнь 13, 2007, 22:33 »

А так ?

Код:

lv->selectionModel()->select(index, QItemSelectionModel::Select);
Записан
izoomer
Гость
« Ответ #2 : Июнь 13, 2007, 23:11 »

Цитата: "SABROG"
А так ?

Код:

lv->selectionModel()->select(index, QItemSelectionModel::Select);

если  сделать это после того как дал команду setCurentIndex(index) то выходит так , что он уже выделен это командой и select работает на то что уже выделено ...

добавлено спустя 17 минут:

 делаю так
Код:

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 ) );
}
QItemSelection curSelect = selectionModel->selection();
curSelect.select( modelDirs->index( iRow, 0, rootIndex ) , modelDirs->index( iRow, 0, rootIndex )  );
selectionModel->select(curSelect, QItemSelectionModel::Select );



а получаетсЯ что выделяет текущую и текущая-1 строку ... и так две идут выделенные ... а нужно что бы выделяло столько строк , сколько делаем перемещение ... затем например просто переместили  и выделили другой кусок строк .... нужно что бы работало как выделение на клавиатуре с нажатой ctrl .... то есть фрагментами выделять и хранить в модели ... можно так сделать ?
Записан
SABROG
Гость
« Ответ #3 : Июнь 13, 2007, 23:31 »

А так ?

Код:

lv->selectionModel()->setCurrentIndex(index, QItemSelectionModel::SelectCurrent);
Записан
izoomer
Гость
« Ответ #4 : Июнь 13, 2007, 23:46 »

Цитата: "SABROG"
А так ?

Код:

lv->selectionModel()->setCurrentIndex(index, QItemSelectionModel::SelectCurrent);

то есть вместо моих listDir->setCurrentIndex использовать эту комманду ? если да то результат тот же что и в моем коде ... простое перемещение по строкам

добавлено спустя 3 минуты:

 если делать
Код:

lv->selectionModel()->setCurrentIndex(index, QItemSelectionModel::Select);

то идет выделение с переходом на следующий ... но если выделен итем уже , то с него выделение не снимается , то есть не инвертируется выделение ...
Записан
SABROG
Гость
« Ответ #5 : Июнь 13, 2007, 23:51 »

Поиграйся с этими флагами:

Код:


QItemSelectionModel::NoUpdate
QItemSelectionModel::Clear
QItemSelectionModel::Select
QItemSelectionModel::Deselect
QItemSelectionModel::Toggle
QItemSelectionModel::Current
QItemSelectionModel::Rows
QItemSelectionModel::Columns
QItemSelectionModel::SelectCurrent
QItemSelectionModel::ToggleCurrent
QItemSelectionModel::ClearAndSelect

Записан
vaprele07
Гость
« Ответ #6 : Июнь 14, 2007, 10:48 »

или с этим:
setSelectionMode(ExtendedSelection)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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