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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как проигнорировать смену текущего item-а в QListWidget?  (Прочитано 2671 раз)
Varan
Гость
« : Май 13, 2011, 12:34 »

Вопрос касается и других наследников QAbstractItemView.
Я хочу, чтобы при выборе нового item в списке QListWidget происходила проверка на правильность некоторых данных, и, если эти данные неправильные, переход на новый item бы просто не происходил. Но как проигнорировать смену текущего item, я пока не нашёл.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Май 13, 2011, 12:43 »

Перегрузи
Код
C++ (Qt)
void QAbstractItemView::currentChanged ( const QModelIndex & current, const QModelIndex & previous ) [virtual protected]
Записан

Qt 5.11/4.8.7 (X11/Win)
Varan
Гость
« Ответ #2 : Май 13, 2011, 12:59 »

Перегрузи
Код
C++ (Qt)
void QAbstractItemView::currentChanged ( const QModelIndex & current, const QModelIndex & previous ) [virtual protected]
я так понял, что эта функция фактически уже вызывается по факту - т.е. как запретить в ней переход, я не нашёл.
Только если ещё раз делать setCurrentItem(prev)? После чего опять вызовется она же.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Май 13, 2011, 15:27 »

Цитировать
я так понял, что эта функция фактически уже вызывается по факту - т.е. как запретить в ней переход, я не нашёл.
Только если ещё раз делать setCurrentItem(prev)? После чего опять вызовется она же.
Да, нужно вставлять "guards" от рекурсии.
Можно и по-другому. Перегружаем
Код
C++ (Qt)
QModelIndex QAbstractItemView::indexAt ( const QPoint & point ) const [pure virtual]
в случае смены элемента по нажатию мыши
и
Код
C++ (Qt)
QModelIndex QAbstractItemView::moveCursor ( CursorAction cursorAction, Qt::KeyboardModifiers modifiers ) [pure virtual protected]
в случае смены элемента по нажатию клавиатуры.
Имхо, других вариантов нет.
« Последнее редактирование: Май 13, 2011, 15:29 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Varan
Гость
« Ответ #4 : Май 13, 2011, 16:41 »

Имхо, других вариантов нет.
Благодарю. Отстой в том, что списка на самом деле два вложенных. Условие проверяется на нижнем уровне, а переход надо блокировать на любом Улыбающийся.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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