Название: Почему connect(treeView->selectionModel()..., а не connect(treeView... Отправлено: Caduceus от Январь 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()..., Вот собственно и вопрос - а почему так? И как понимать какой сигнал надо ловить? И почему ничего не ловилоось в первом сулчае? Название: Re: Почему connect(treeView->selectionModel()..., а не connect(treeView... Отправлено: pastor от Январь 23, 2009, 14:25 Потому что в QTreeView (и его родителях) нет сигнала selectionChanged. И это вам делжен был "сказать" (на консоль или output) connect. selectionChanged это слот.
Цитировать void QAbstractItemView::selectionChanged ( const QItemSelection & selected, const QItemSelection & deselected ) [virtual protected slot] Название: Re: Почему connect(treeView->selectionModel()..., а не connect(treeView... Отправлено: Caduceus от Январь 23, 2009, 14:26 У блин, точно, слот. А почему сигнал в модели, а не в виде?
Так вообще, если сигнал в модели, а и List и Tree привязаны к одной мо\дели, то можно просто повесить 2 слота от листа и от дерева на этот сигнал... Ага, вот для чего это сделано в модели? Название: Re: Почему connect(treeView->selectionModel()..., а не connect(treeView... Отправлено: pastor от Январь 23, 2009, 14:31 Потому что за это отвечает QItemSelectionModel.
Название: Re: Почему connect(treeView->selectionModel()..., а не connect(treeView... Отправлено: Caduceus от Январь 23, 2009, 14:34 А как тут втерлась эта модель? Моя модель - это QFileSystemModel - наследник QAbstractItemModel.
Откуда взялась эта модель? Название: Re: Почему connect(treeView->selectionModel()..., а не connect(treeView... Отправлено: Rcus от Январь 23, 2009, 14:36 QItemSelectionModel * selectionModel () const
А нужна она затем чтобы можно было синхронизировать выделение в разных представлениях, привязанных к одной модели данных Название: Re: Почему connect(treeView->selectionModel()..., а не connect(treeView... Отправлено: Caduceus от Январь 23, 2009, 14:37 Во блин, нехило все продумано
Спасибо Название: Re: Почему connect(treeView->selectionModel()..., а не connect(treeView... Отправлено: lit-uriy от Январь 23, 2009, 16:45 2 Caduceus, можешь почитать о концепции выделения на русском Обработка выбора элементов (http://doc.crossplatform.ru/qt/4.4.3/model-view-view.html#handling-selections-of-items)
|