Russian Qt Forum
Ноябрь 26, 2024, 16:46
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Почему connect(treeView->selectionModel()..., а не connect(treeView...
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Почему connect(treeView->selectionModel()..., а не connect(treeView... (Прочитано 5435 раз)
Caduceus
Гость
Почему connect(treeView->selectionModel()..., а не connect(treeView...
«
:
Январь 23, 2009, 14:11 »
Сижу разбираюсь с моделями-видами, сигналами-слотами
У меня есть дерево QTreeView и список QListView . При клике на элемент дереыва должен меняться список.
Полез я в хидер QTreeView - нашел selectionChanged - судя по названию - то что надо. Переопределил QListView и добавил свой слот ChangeContent, ну и счатливый, написал
connect(treeView, SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
listView, SLOT(ChangeContent(const QItemSelection &, const QItemSelection&)));
Не заходил он в ChangeContent
Покопавшиьс 10 минут на просторах сети нашел, что надо писать connect(treeView->selectionModel()...,
Вот собственно и вопрос - а почему так? И как понимать какой сигнал надо ловить? И почему ничего не ловилоось в первом сулчае?
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Почему connect(treeView->selectionModel()..., а не connect(treeView...
«
Ответ #1 :
Январь 23, 2009, 14:25 »
Потому что в QTreeView (и его родителях) нет сигнала selectionChanged. И это вам делжен был "сказать" (на консоль или output) connect. selectionChanged это
слот
.
Цитировать
void QAbstractItemView::selectionChanged ( const QItemSelection & selected, const QItemSelection & deselected ) [virtual protected slot]
«
Последнее редактирование: Январь 23, 2009, 14:26 от pastor
»
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Caduceus
Гость
Re: Почему connect(treeView->selectionModel()..., а не connect(treeView...
«
Ответ #2 :
Январь 23, 2009, 14:26 »
У блин, точно, слот. А почему сигнал в модели, а не в виде?
Так вообще, если сигнал в модели, а и List и Tree привязаны к одной мо\дели, то можно просто повесить 2 слота от листа и от дерева на этот сигнал... Ага, вот для чего это сделано в модели?
«
Последнее редактирование: Январь 23, 2009, 14:30 от Caduceus
»
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Почему connect(treeView->selectionModel()..., а не connect(treeView...
«
Ответ #3 :
Январь 23, 2009, 14:31 »
Потому что за это отвечает QItemSelectionModel.
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Caduceus
Гость
Re: Почему connect(treeView->selectionModel()..., а не connect(treeView...
«
Ответ #4 :
Январь 23, 2009, 14:34 »
А как тут втерлась эта модель? Моя модель - это QFileSystemModel - наследник QAbstractItemModel.
Откуда взялась эта модель?
Записан
Rcus
Гость
Re: Почему connect(treeView->selectionModel()..., а не connect(treeView...
«
Ответ #5 :
Январь 23, 2009, 14:36 »
QItemSelectionModel * selectionModel () const
А нужна она затем чтобы можно было синхронизировать выделение в разных представлениях, привязанных к одной модели данных
Записан
Caduceus
Гость
Re: Почему connect(treeView->selectionModel()..., а не connect(treeView...
«
Ответ #6 :
Январь 23, 2009, 14:37 »
Во блин, нехило все продумано
Спасибо
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Почему connect(treeView->selectionModel()..., а не connect(treeView...
«
Ответ #7 :
Январь 23, 2009, 16:45 »
2 Caduceus, можешь почитать о концепции выделения на русском
Обработка выбора элементов
Записан
Юра.
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...