Название: Model-View Отправлено: demaker от Март 19, 2014, 16:00 Подскажите, как сделать, чтобы при
нажатии указателя на вложенность в окне вьювера (QTreeView) ничего не происходило. Название: Re: Model-View Отправлено: UltraPenguin от Март 19, 2014, 19:10 Имеется ввиду чтобы не раскрывалась данная ветка?
UPD: если да, то почему нельзя хватать сигнал Код: expand ( const QModelIndex & index ) Жесткое издевательство над пользователем ;D Название: Re: Model-View Отправлено: demaker от Март 20, 2014, 10:05 А как ветку закрывать ???
Код: collapse ( const QModelIndex) Название: Re: Model-View Отправлено: UltraPenguin от Март 20, 2014, 10:31 Кстати да, я очепятился. Сигнал такой
Код: expanded ( const QModelIndex & index ) Цитировать А как ветку закрывать ??? Ну я бы сделал так: - создал слот в наследнике от QTreeView (что-то типа slotCollapseIfNeeded(const QModelIndex & index ) ) - в нем написал бы логику того что мы будем закрывать обратно и когда, и для закрытия есть Код: collapse ( index ); //вызов слота Код: emit collapsed ( index ); //вызов сигнала и соответственно слота Я такого не реализовывал, поэтому не уверен есть ли вероятность, что сначала выполнится твой код, а лишь потом код слота expand (что в таком случае просто вновь развернет ветку) Название: Re: Model-View Отправлено: VPS от Март 20, 2014, 10:55 Я такого не реализовывал, поэтому не уверен есть ли вероятность, что сначала выполнится твой код, а лишь потом код слота expand (что в таком случае просто вновь развернет ветку) Из документации: void QTreeView::expanded ( const QModelIndex & index ) [signal] This signal is emitted when the item specified by index is expanded. Название: Re: Model-View Отправлено: UltraPenguin от Март 20, 2014, 11:16 2vps
ок, понятно что он сигналит, когда ветка раскрылась. А если у нас два слота подключены к этому сигналу? Какой выполнится первым - тот, что по умолчанию или кастомный? В первом случае все норм, а во втором все попытки закрыть ветку сразу после открытия из кастомного слота обречены. Название: Re: Model-View Отправлено: kambala от Март 20, 2014, 11:54 может проще просто временно скрывать эту стрелочку?
Название: Re: Model-View Отправлено: demaker от Март 20, 2014, 12:08 Название: Re: Model-View Отправлено: VPS от Март 20, 2014, 12:26 ок, понятно что он сигналит, когда ветка раскрылась. А если у нас два слота подключены к этому сигналу? Какой выполнится первым - тот, что по умолчанию или кастомный? В первом случае все норм, а во втором все попытки закрыть ветку сразу после открытия из кастомного слота обречены. В документации вроде написано, что при возникновении сигнала, слоты вызываются один за другим, порядок не определен. П.С.: В исходниках класса "QTreeView" сигнал "expanded" вызывается в слоте "expand", т.е. если у Вас один пользовательский слот привязан к сигналу "expanded" (а в Вашем предложении вроде так), то он и отработает. Название: Re: Model-View Отправлено: Igors от Март 20, 2014, 13:43 Прильнем к первоисточнику
Код А скрыть можно как показывл kambala Код
Название: Re: Model-View Отправлено: Johnik от Март 20, 2014, 13:55 В документации вроде написано, что при возникновении сигнала, слоты вызываются один за другим, порядок не определен. http://qt-project.org/doc/qt-5/qobject.html#connect-3If a signal is connected to several slots, the slots are activated in the same order in which the connections were made, when the signal is emitted. т.е., вызываются в том порядке в котором были сделаны подключения (посмотрел начиная с 4.7, там так же) Название: Re: Model-View Отправлено: kambala от Март 20, 2014, 14:09 А скрыть можно как показывл kambala это для всех сразу, а я имел в виду для конкретного (с помощью убирания соответствующего флага у нужного айтема в модели)Код
Название: Re: Model-View Отправлено: VPS от Март 20, 2014, 15:39 http://qt-project.org/doc/qt-5/qobject.html#connect-3 If a signal is connected to several slots, the slots are activated in the same order in which the connections were made, when the signal is emitted. т.е., вызываются в том порядке в котором были сделаны подключения (посмотрел начиная с 4.7, там так же) Да, Вы правы. Я вычитал то, что написал выше в wiki на сайте http://developer.nokia.com и, видимо, там устаревшая информация. |