Russian Qt Forum

Qt => Model-View (MV) => Тема начата: nixman05 от Октябрь 17, 2009, 16:03



Название: QTableView и изменение текущего элемента
Отправлено: nixman05 от Октябрь 17, 2009, 16:03
С помощью какого сигнала можно отловить изменение пользователем текущего элемента текущего элемента в tableVeiw?

P.S. B QTableView есть виртуальные слоты currentChanged ( const QModelIndex & current, const QModelIndex & previous ) и currentChanged ( const QModelIndex & current, const QModelIndex & previous ) , т.е создавать потомка класса , в котором определять необходимый сигнал и переопределять эти слоты для вызова сигнала.

Или данный функционал есть в самом QTableView, если есть то где искать?


Название: Re: QTableView и изменение текущего элемента
Отправлено: Marat(Qt) от Октябрь 17, 2009, 16:10
создайте свой делегат, в нем, в нужном месте сделайте emit имя_сигнала


Название: Re: QTableView и изменение текущего элемента
Отправлено: nixman05 от Октябрь 17, 2009, 16:26
создайте свой делегат, в нем, в нужном месте сделайте emit имя_сигнала

Что и где переопределять?


Название: Re: QTableView и изменение текущего элемента
Отправлено: Marat(Qt) от Октябрь 17, 2009, 17:08
да собственно ничего, как оказалось, такой сигнал есть в QAbstractItemDelegate:
Код:
void QAbstractItemDelegate::closeEditor
пропробуй задать обычного делегата для tableView и сигнал делегата связывать со своим слотом, если это скучно, то можно создать свой tableView, внутри которого будет жить такой коннект


Название: Re: QTableView и изменение текущего элемента
Отправлено: nixman05 от Октябрь 17, 2009, 20:33
да собственно ничего, как оказалось, такой сигнал есть в QAbstractItemDelegate:
Код:
void QAbstractItemDelegate::closeEditor
пропробуй задать обычного делегата для tableView и сигнал делегата связывать со своим слотом, если это скучно, то можно создать свой tableView, внутри которого будет жить такой коннект

Редактирование элементов не происходит, т.е на представлении стоит флаг NoEditTriggers, будет ли в данном случае выполняться указанный слот для делегата?


Название: Re: QTableView и изменение текущего элемента
Отправлено: break от Октябрь 17, 2009, 21:23
не надо создавать делегат - есть сигнал в VIEW->selectionModel() с названием currentChanged ( const QModelIndex &, const QModelIndex & )

вообще обрати внимание что во вьюхе selectionModel нужен именно для этих целей

А делегаты нужны для редактирования элементов (всей таблицы, отдельных строк или столбцов или конкретных ячеек) - никак не для этой цели. Как бы вы юзали делегат - натравили его на все ячейки таблицы? А когда потом потребуется по другому отображать или редактировать элемент (то для чего нужны делегаты действительно) - то что делать?


Название: Re: QTableView и изменение текущего элемента
Отправлено: nixman05 от Октябрь 18, 2009, 11:31
не надо создавать делегат - есть сигнал в VIEW->selectionModel() с названием currentChanged ( const QModelIndex &, const QModelIndex & )

вообще обрати внимание что во вьюхе selectionModel нужен именно для этих целей

А делегаты нужны для редактирования элементов (всей таблицы, отдельных строк или столбцов или конкретных ячеек) - никак не для этой цели. Как бы вы юзали делегат - натравили его на все ячейки таблицы? А когда потом потребуется по другому отображать или редактировать элемент (то для чего нужны делегаты действительно) - то что делать?

Спасибо, все заработало.