Russian Qt Forum
Ноябрь 24, 2024, 05:40
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Model-View (MV)
>
QTableView и изменение текущего элемента
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QTableView и изменение текущего элемента (Прочитано 5741 раз)
nixman05
Гость
QTableView и изменение текущего элемента
«
:
Октябрь 17, 2009, 16:03 »
С помощью какого сигнала можно отловить изменение пользователем текущего элемента текущего элемента в tableVeiw?
P.S. B QTableView есть виртуальные слоты currentChanged ( const QModelIndex & current, const QModelIndex & previous ) и currentChanged ( const QModelIndex & current, const QModelIndex & previous ) , т.е создавать потомка класса , в котором определять необходимый сигнал и переопределять эти слоты для вызова сигнала.
Или данный функционал есть в самом QTableView, если есть то где искать?
Записан
Marat(Qt)
Гость
Re: QTableView и изменение текущего элемента
«
Ответ #1 :
Октябрь 17, 2009, 16:10 »
создайте свой делегат, в нем, в нужном месте сделайте emit имя_сигнала
Записан
nixman05
Гость
Re: QTableView и изменение текущего элемента
«
Ответ #2 :
Октябрь 17, 2009, 16:26 »
Цитата: Marat(Qt) от Октябрь 17, 2009, 16:10
создайте свой делегат, в нем, в нужном месте сделайте emit имя_сигнала
Что и где переопределять?
Записан
Marat(Qt)
Гость
Re: QTableView и изменение текущего элемента
«
Ответ #3 :
Октябрь 17, 2009, 17:08 »
да собственно ничего, как оказалось, такой сигнал есть в QAbstractItemDelegate:
Код:
void QAbstractItemDelegate::closeEditor
пропробуй задать обычного делегата для tableView и сигнал делегата связывать со своим слотом, если это скучно, то можно создать свой tableView, внутри которого будет жить такой коннект
Записан
nixman05
Гость
Re: QTableView и изменение текущего элемента
«
Ответ #4 :
Октябрь 17, 2009, 20:33 »
Цитата: Marat(Qt) от Октябрь 17, 2009, 17:08
да собственно ничего, как оказалось, такой сигнал есть в QAbstractItemDelegate:
Код:
void QAbstractItemDelegate::closeEditor
пропробуй задать обычного делегата для tableView и сигнал делегата связывать со своим слотом, если это скучно, то можно создать свой tableView, внутри которого будет жить такой коннект
Редактирование элементов не происходит, т.е на представлении стоит флаг NoEditTriggers, будет ли в данном случае выполняться указанный слот для делегата?
Записан
break
Гипер активный житель
Offline
Сообщений: 846
Re: QTableView и изменение текущего элемента
«
Ответ #5 :
Октябрь 17, 2009, 21:23 »
не надо создавать делегат - есть сигнал в
VIEW->selectionModel()
с названием
currentChanged ( const QModelIndex &, const QModelIndex & )
вообще обрати внимание что во вьюхе selectionModel нужен именно для этих целей
А делегаты нужны для редактирования элементов (всей таблицы, отдельных строк или столбцов или конкретных ячеек) - никак не для этой цели. Как бы вы юзали делегат - натравили его на все ячейки таблицы? А когда потом потребуется по другому отображать или редактировать элемент (то для чего нужны делегаты действительно) - то что делать?
«
Последнее редактирование: Октябрь 17, 2009, 21:26 от break
»
Записан
nixman05
Гость
Re: QTableView и изменение текущего элемента
«
Ответ #6 :
Октябрь 18, 2009, 11:31 »
Цитата: break от Октябрь 17, 2009, 21:23
не надо создавать делегат - есть сигнал в
VIEW->selectionModel()
с названием
currentChanged ( const QModelIndex &, const QModelIndex & )
вообще обрати внимание что во вьюхе selectionModel нужен именно для этих целей
А делегаты нужны для редактирования элементов (всей таблицы, отдельных строк или столбцов или конкретных ячеек) - никак не для этой цели. Как бы вы юзали делегат - натравили его на все ячейки таблицы? А когда потом потребуется по другому отображать или редактировать элемент (то для чего нужны делегаты действительно) - то что делать?
Спасибо, все заработало.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...