Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: vipet от Ноябрь 20, 2007, 00:41



Название: QListView - как отследить изменение выделенного элемента?
Отправлено: vipet от Ноябрь 20, 2007, 00:41
Как наиболее простым способом отследить изменение выделенного элемента в QListView, если для этого была использована клавиатура? (Т.е. перемещение выделения с одного элемента на другой после нажатия на клавиши управления курсором)

Если не клава, а мышь, то есть соотв. сингал - clicked. А для клавы такого сигнала нету..

Надо обязательно наследоваться или все-тки есть какой-то сигнал (я его не нашел) ?

Qt 4.3.2


Название: Re: QListView - как отследить изменение выделенного элемента?
Отправлено: Alex03 от Ноябрь 20, 2007, 06:57
Сигнал currentItemChanged() есть у QListWidget, мож получится его использовать. Иначе видимо наследование.


Название: Re: QListView - как отследить изменение выделенного элемента?
Отправлено: vipet от Ноябрь 20, 2007, 11:04
QListWidget, к сожалению не подоходит, он слишком прост.

Я сделал в итоге простого наследника QListView:

Код:
class AOneColumnListView : public QListView
{
Q_OBJECT
public:
AOneColumnListView(QWidget *parent = 0): QListView(parent) {};

protected:
void selectionChanged(const QItemSelection & selected,
const QItemSelection & deselected)
{
emit currentItemChanged(selected.indexes()[0].row());
};

signals:
void currentItemChanged(int row);

};


Название: Re: QListView - как отследить изменение выделенного элемента?
Отправлено: span от Ноябрь 20, 2007, 16:37
Цитировать
QItemSelectionModel * QAbstractItemView::selectionModel () const
Returns the current selection model.
See also setSelectionModel() and selectedIndexes().

Ну а у него сигнал

Цитировать
void currentChanged ( const QModelIndex & current, const QModelIndex & previous )


Название: Re: QListView - как отследить изменение выделенного элемента?
Отправлено: vipet от Ноябрь 30, 2007, 22:04
span,

спасибо, то что надо!

Правда я все равно наследовался в итоге, т.к. понадобилась еще и другая функциональность (перенаправлять нажатия Enter'a в нажатие Tab'a и прочее).