Название: [РЕШЕНО] Управление возможностью перехода по узлам дерева Отправлено: sergek от Октябрь 16, 2013, 18:19 Коллеги, дайте подсказку, пожалуйста, по такой задаче.
На главной форме есть объекты QTreeView и QPlainTextEdit. В узлах представления - наименования неких текстов (скриптов), в текстовом редакторе отображается их содержимое. При перемещении по дереву обновляется текст в редакторе. Текст можно редактировать. Нужно запретить переход к другому узлу представления, если не сохранены изменения текущего текста. Т.е. дать возможность выбора пользователю сохранить/отказаться от изменений и только после этого перейти к другому узлу. Хорошо, если есть что-то типа: Код: void MyTreeView::selectionChangingEvent(QКакой-тоEvent *event) Название: Re: Управление возможностью перехода по узлам дерева Отправлено: kambala от Октябрь 16, 2013, 20:02 вешай фильтр событий, лови в нем события нажатия клавиатуры/мыши и возвращай true чтобы блокировать событие
Название: Re: Управление возможностью перехода по узлам дерева Отправлено: sergek от Октябрь 16, 2013, 21:38 вешай фильтр событий, лови в нем события нажатия клавиатуры/мыши и возвращай true чтобы блокировать событие Я так пробовал, не получилось:Код: MainWindow::MainWindow(QWidget *parent) : Попробую еще на отдельном примере... Название: Re: Управление возможностью перехода по узлам дерева Отправлено: VPS от Октябрь 16, 2013, 21:41 А если просто отключать "TreeView" через "setEnabled(false)"?
Название: Re: Управление возможностью перехода по узлам дерева Отправлено: kambala от Октябрь 16, 2013, 21:51 для мышки scriptTree->viewport()->installEventFilter(this);
Название: Re: Управление возможностью перехода по узлам дерева Отправлено: sergek от Октябрь 16, 2013, 22:10 для мышки scriptTree->viewport()->installEventFilter(this); Да, точно! Спасибо!А если просто отключать "TreeView" через "setEnabled(false)"? Как-то не очень. :) Да и с отказом от сохранения изменений будут сложности...Название: Re: Управление возможностью перехода по узлам дерева Отправлено: Bepec от Октябрь 17, 2013, 06:56 Посмотрите как это сделано в QTreeWidget. Там есть такой сигнальчик с указателями на предыдущий и новый элемент дерева.
Название: Re: Управление возможностью перехода по узлам дерева Отправлено: sergek от Октябрь 17, 2013, 16:57 Посмотрите как это сделано в QTreeWidget. Там есть такой сигнальчик с указателями на предыдущий и новый элемент дерева. Слона-то я и не заметил... :( Дело в том, что аналогичный сигнал я использую для вывода текста (в TreeView сигнал selectionChanged от ItemSelectionModel). Тормознул на том, что сигнал испускается уже после перехода и выделения другого узла. Но никто не мешает в соединенном с ним слоте проанализировать условия, выдать MessageBox, и при необходимости, вернуть выделение назад. Немного, на мой взгляд, непривычно, но сойдет. Спасибо всем! Тему закрываю. |