Russian Qt Forum

Qt => Model-View (MV) => Тема начата: izoomer от Июнь 13, 2007, 22:21



Название: [QT-4.2.0 Linux] вопрос по QItemSelectedModel
Отправлено: izoomer от Июнь 13, 2007, 22:21
У меня в программе в QListView навигация ВВЕРХ ВНИЗ производится при помощи setCurrentIndex() .... на экране есть кнопка переключатель ... если кнопка нажата то просто перемещение делаю по строкам вверх или вниз, если отжата то нужно делать выделение строк при перемещении по ним ... подскажите как сделать .... уже перепробывал разные методы , а вот с setCurrentIndex чего то не ужается подружить выделение ....


Название: [QT-4.2.0 Linux] вопрос по QItemSelectedModel
Отправлено: SABROG от Июнь 13, 2007, 22:33
А так ?

Код:

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


Название: [QT-4.2.0 Linux] вопрос по QItemSelectedModel
Отправлено: izoomer от Июнь 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 .... то есть фрагментами выделять и хранить в модели ... можно так сделать ?


Название: [QT-4.2.0 Linux] вопрос по QItemSelectedModel
Отправлено: SABROG от Июнь 13, 2007, 23:31
А так ?

Код:

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


Название: [QT-4.2.0 Linux] вопрос по QItemSelectedModel
Отправлено: izoomer от Июнь 13, 2007, 23:46
Цитата: "SABROG"
А так ?

Код:

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

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

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

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

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

то идет выделение с переходом на следующий ... но если выделен итем уже , то с него выделение не снимается , то есть не инвертируется выделение ...


Название: [QT-4.2.0 Linux] вопрос по QItemSelectedModel
Отправлено: SABROG от Июнь 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



Название: [QT-4.2.0 Linux] вопрос по QItemSelectedModel
Отправлено: vaprele07 от Июнь 14, 2007, 10:48
или с этим:
setSelectionMode(ExtendedSelection)