Russian Qt Forum
Ноябрь 24, 2024, 18:55
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Событие перед переключением tab
Страниц:
1
[
2
]
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Событие перед переключением tab (Прочитано 21029 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Событие перед переключением tab
«
Ответ #15 :
Октябрь 28, 2009, 14:41 »
Цитата: cdsmika от Октябрь 25, 2009, 18:30
Кстати при таком раскладе виден переход на следующую закладку, после которого задается вопрос, а потом видна отмена - не есть гуд.
Ничего лучшего не видно, может быть попробовать замаскировать это с помощью setUpdateEnabled.
Впечатление такое что Вы "гладите кошку против шерсти" - табы предполагают безмодальное поведение которое Вы упорно хотите превратить в модальное. Вместо этого чем плохо например приделать к контролам валидаторы? Писать не больше
Записан
cdsmika
Гость
Re: Событие перед переключением tab
«
Ответ #16 :
Октябрь 28, 2009, 15:01 »
Цитата: Igors от Октябрь 28, 2009, 14:41
Цитата: cdsmika от Октябрь 25, 2009, 18:30
Кстати при таком раскладе виден переход на следующую закладку, после которого задается вопрос, а потом видна отмена - не есть гуд.
Ничего лучшего не видно, может быть попробовать замаскировать это с помощью setUpdateEnabled.
Впечатление такое что Вы "гладите кошку против шерсти" - табы предполагают безмодальное поведение которое Вы упорно хотите превратить в модальное. Вместо этого чем плохо например приделать к контролам валидаторы? Писать не больше
Да, я тоже думаю об использовании setUpdateEnabled, но еще не пробовал.
впечатление может и правильное, но я не могу иначе. При переключении закладок необходимо перезагружать данные из БД. А если перезагружать, то естественно необходимо спросить у человека не хочет ли он потерять свои изменения. Не понял как валидаторы здесь могут помочь. Как я понял из хелпа валидаторы можно установить только на QLineEdit и QComboBox. У меня QTableWidget (но это не обязательно, может быть и любой другой класс, в том числе и свой компонент)
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Событие перед переключением tab
«
Ответ #17 :
Октябрь 28, 2009, 15:07 »
Цитата: cdsmika от Октябрь 28, 2009, 15:01
естественно необходимо спросить у человека не хочет ли он потерять свои изменения.
совсем не естественно. я бы переработал интерфейс...
Записан
cdsmika
Гость
Re: Событие перед переключением tab
«
Ответ #18 :
Октябрь 28, 2009, 15:11 »
Цитата: Авварон от Октябрь 28, 2009, 15:07
Цитата: cdsmika от Октябрь 28, 2009, 15:01
естественно необходимо спросить у человека не хочет ли он потерять свои изменения.
совсем не естественно. я бы переработал интерфейс...
Хорошо, научи меня как
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Событие перед переключением tab
«
Ответ #19 :
Октябрь 28, 2009, 15:15 »
что находится внутри табов? можно скриншотик? Что пользователь делает - каким образом он редактирует бд? Почему нельзя делать сабмит в бд по ходу редактирования?
Записан
cdsmika
Гость
Re: Событие перед переключением tab
«
Ответ #20 :
Октябрь 28, 2009, 15:20 »
Цитата: Авварон от Октябрь 28, 2009, 15:15
что находится внутри табов? можно скриншотик? Что пользователь делает - каким образом он редактирует бд? Почему нельзя делать сабмит в бд по ходу редактирования?
Что находится внутри табов - см. выше. Скриншотик сделаю. Пользователь делает все мыслимые и не мыслимые манипуляции с данными (добавление, удаление, изменение, привязка связанных данных, фоток, изменяет структуру данных в БД и т.д.). Нельзя, т.к. в этом случае изменения нельзя будет откатить (как пошагово так и полностью).
Записан
cdsmika
Гость
Re: Событие перед переключением tab
«
Ответ #21 :
Октябрь 30, 2009, 02:22 »
Цитата: Авварон от Октябрь 28, 2009, 15:15
что находится внутри табов? можно скриншотик? Что пользователь делает - каким образом он редактирует бд? Почему нельзя делать сабмит в бд по ходу редактирования?
Вот скриншот
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Событие перед переключением tab
«
Ответ #22 :
Октябрь 30, 2009, 11:16 »
Зачем нужны табы если Вы "Исходящие документы" уже показали выше 2 раза (более чем ясно)
Записан
cdsmika
Гость
Re: Событие перед переключением tab
«
Ответ #23 :
Октябрь 30, 2009, 12:12 »
Цитата: Igors от Октябрь 30, 2009, 11:16
Зачем нужны табы если Вы "Исходящие документы" уже показали выше 2 раза (более чем ясно)
А это меняет дело? Просто дублирую для пользователей. Тулбар можно скрыть при желании
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Событие перед переключением tab
«
Ответ #24 :
Октябрь 30, 2009, 13:00 »
Цитата: cdsmika от Октябрь 30, 2009, 12:12
А это меняет дело? Просто дублирую для пользователей. Тулбар можно скрыть при желании
Так и дублируйте тулбаром или просто лайаутом с набором кнопок/чекбоксов. Табы-то привлекать зачем?
Записан
cdsmika
Гость
Re: Событие перед переключением tab
«
Ответ #25 :
Октябрь 30, 2009, 13:07 »
Цитата: Igors от Октябрь 30, 2009, 13:00
Цитата: cdsmika от Октябрь 30, 2009, 12:12
А это меняет дело? Просто дублирую для пользователей. Тулбар можно скрыть при желании
Так и дублируйте тулбаром или просто лайаутом с набором кнопок/чекбоксов. Табы-то привлекать зачем?
Затем, чтобы отображать сложный интерфейс (не только TableWidget) и переключать задачи (проблема в том, что задачи могут быть разной структуры, т.е. документы, пользователи и т.д. При этом необходимо перезагружать данные из БД) можно было просто указанием индекса таба. А зачем по-вашему компонент QTabWidget?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Событие перед переключением tab
«
Ответ #26 :
Октябрь 30, 2009, 13:50 »
Цитата: cdsmika от Октябрь 30, 2009, 13:07
Затем, чтобы отображать сложный интерфейс (не только TableWidget) и переключать задачи (проблема в том, что задачи могут быть разной структуры, т.е. документы, пользователи и т.д. При этом необходимо перезагружать данные из БД) можно было просто указанием индекса таба. А зачем по-вашему компонент QTabWidget?
Если нужно "сменить страницу по индексу" то QStackedLayout должен подойти. Конечно, трудности с QTabWidget невеликие и победить их можно, но табы провоцируют пользователя "везде полазить" что здесь не очень Вам нужно
Записан
cdsmika
Гость
Re: Событие перед переключением tab
«
Ответ #27 :
Октябрь 30, 2009, 18:41 »
Цитата: Igors от Октябрь 30, 2009, 13:50
Цитата: cdsmika от Октябрь 30, 2009, 13:07
Затем, чтобы отображать сложный интерфейс (не только TableWidget) и переключать задачи (проблема в том, что задачи могут быть разной структуры, т.е. документы, пользователи и т.д. При этом необходимо перезагружать данные из БД) можно было просто указанием индекса таба. А зачем по-вашему компонент QTabWidget?
Если нужно "сменить страницу по индексу" то QStackedLayout должен подойти. Конечно, трудности с QTabWidget невеликие и победить их можно, но табы провоцируют пользователя "везде полазить" что здесь не очень Вам нужно
Поясните как использование QStackedLayout может решить проблему проверки перед сменой задачи? QStackedLayout также как и QTabWidget не содержит вышеуказанного события...
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Событие перед переключением tab
«
Ответ #28 :
Октябрь 30, 2009, 18:52 »
Цитата: cdsmika от Октябрь 30, 2009, 18:41
Поясните как использование QStackedLayout может решить проблему проверки перед сменой задачи? QStackedLayout также как и QTabWidget не содержит вышеуказанного события...
Событие Вы возьмете от тулбара или набора кнопок. А в обработчике решите нужно ли делать setCurrentIndex для этого лайаута или заставить пользователя закончить все дела на текущей странице
Записан
cdsmika
Гость
Re: Событие перед переключением tab
«
Ответ #29 :
Октябрь 30, 2009, 19:12 »
Цитата: Igors от Октябрь 30, 2009, 18:52
Цитата: cdsmika от Октябрь 30, 2009, 18:41
Поясните как использование QStackedLayout может решить проблему проверки перед сменой задачи? QStackedLayout также как и QTabWidget не содержит вышеуказанного события...
Событие Вы возьмете от тулбара или набора кнопок. А в обработчике решите нужно ли делать setCurrentIndex для этого лайаута или заставить пользователя закончить все дела на текущей странице
Спасибо, это конечно вариант, но есть одно НО. Тулбар задач занимает определенное место на экране, если пользователь решит его скрыть (это в принципе разрешено и без моего ведома), то не сможет переключать задачи. Значит нужно сделать фиксированные кнопки или как-то закрепить тулбар.
Таким образом, делаем вывод: для того, чтобы выдавать разрешение на смену текущего фрейма мне нужно ограничить использование интерфейса, вместо того, чтобы просто использовать событие перед переключением (такое событие в тулбаре есть во всех средах разработки, акромя Qt).
Просто пока я не нахожу единомышленников, считающих, что данный сигнал нужен и нужен он практически в каждом контейнере, позволяющем переключение фрэймов.
Записан
Страниц:
1
[
2
]
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...