Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Varan от Май 13, 2011, 12:34



Название: Как проигнорировать смену текущего item-а в QListWidget?
Отправлено: Varan от Май 13, 2011, 12:34
Вопрос касается и других наследников QAbstractItemView.
Я хочу, чтобы при выборе нового item в списке QListWidget происходила проверка на правильность некоторых данных, и, если эти данные неправильные, переход на новый item бы просто не происходил. Но как проигнорировать смену текущего item, я пока не нашёл.


Название: Re: Как проигнорировать смену текущего item-а в QListWidget?
Отправлено: GreatSnake от Май 13, 2011, 12:43
Перегрузи
Код
C++ (Qt)
void QAbstractItemView::currentChanged ( const QModelIndex & current, const QModelIndex & previous ) [virtual protected]


Название: Re: Как проигнорировать смену текущего item-а в QListWidget?
Отправлено: Varan от Май 13, 2011, 12:59
Перегрузи
Код
C++ (Qt)
void QAbstractItemView::currentChanged ( const QModelIndex & current, const QModelIndex & previous ) [virtual protected]
я так понял, что эта функция фактически уже вызывается по факту - т.е. как запретить в ней переход, я не нашёл.
Только если ещё раз делать setCurrentItem(prev)? После чего опять вызовется она же.


Название: Re: Как проигнорировать смену текущего item-а в QListWidget?
Отправлено: GreatSnake от Май 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]
в случае смены элемента по нажатию клавиатуры.
Имхо, других вариантов нет.


Название: Re: Как проигнорировать смену текущего item-а в QListWidget?
Отправлено: Varan от Май 13, 2011, 16:41
Имхо, других вариантов нет.
Благодарю. Отстой в том, что списка на самом деле два вложенных. Условие проверяется на нижнем уровне, а переход надо блокировать на любом :).