LINUX.ORG.RU

[qt4.5.1][QTreeWidget][Selection]


0

0

Привет. Делаю что-то вроде редактора свойств для неких элементов. Слева QTreeWidget, справа собственно редактор. В слоте

currentItemChanged(current, previous)
обрабатываю смену айтемов: из редактора записываем данные в previous, загружаем в редактор из current. Если в prеvious после редактирования оказываются семантически невалидные данные, то необходимо сигнализировать это и сделать невозможным выбор другого айтема. Делаю так:
editor->setItemData( item );  //setItemData выставляется item'у признак валидности
if( !item->isValid() ) { //item - моя структура данных
       SHOW_CRITICAL_ERROR_MSG( "Ошибка", "Что-то неправильно" );
       ui->treeWidget->blockSignals( true );
       ui->treeWidget->setCurrentItem( previous, 0, QItemSelectionModel::Clear );
//           ui->treeWidget->selectionModel()->clearSelection();
            
       ui->treeWidget->blockSignals( false );
       previous->setSelected( true ); //QTreeWidgetItem, связанный с item
       return;
}
При навигации по дереву с помощью клавиатуры все работает правильно. А вот если мышкой выбрать другой айтем, то он ( другой ) оказывается выделенным( темный background ). Что я делаю не так? С флагами в setCurrentItem(...) игрался, требуемого поведения добиться не удалось. clearSelection() тоже не помогает.

нифига не понял

нужно не сбрасывать выделение?

ui->treeWidget->setSelectionMode(QAbstractItemView::SingleSelection)

и

ui->treeWidget->setCurrentItem( previous, 0, QItemSelectionModel::Select ); 

насколько я понял

lester_dev ★★★★★
()
Ответ на: комментарий от lester_dev

нифига не понял нужно не сбрасывать выделение?

Не, нужно не допустить выделения другого item'a

ui->treeWidget->setSelectionMode(QAbstractItemView::SingleSelection)
 
ui->treeWidget->setCurrentItem( previous, 0, QItemSelectionModel::Select ); 

В таком случае при попытке выбрать другой item с помощью мыши, у него (другого) почему-то закрашивается background, хотя выделенным(прозрачным прямоугольником) остается нужный item (который с ошибкой).

mr-badguy
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.