Russian Qt Forum
Ноябрь 22, 2024, 17:44
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Как запретить закрытие окон под Astra Linux
Страниц:
1
[
2
]
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как запретить закрытие окон под Astra Linux (Прочитано 26848 раз)
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #15 :
Апрель 25, 2019, 11:30 »
Цитата: AlexEx от Апрель 25, 2019, 11:23
Дело в том, что при случайном закрытии пользовательского интерфейса оператор может проморгать важное событие. Прокурор-то его потом в архиве найдет :-). Так что возможность ошибки оператора должна быть сведена к минимуму.
Тогда просто добавьте диалог с запросом подтверждения, если пользователь пытается закрыть окно (выйти из приложения) и запрашивайте два раза, если он это делает при работающем техпроцессе.
Все это делается в обработчике QCloseEvent, в пару строк кода. В документации даже пример такой был.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #16 :
Апрель 25, 2019, 11:33 »
Цитата: AlexEx от Апрель 25, 2019, 11:27
PS
To Old.
Техпроцессом управляют совсем другие вычислительные средства, эти машины АРМ - только GUI.
Тогда можно принудительно перезапускать GUI при получении важного сообщения, если он был закрыт. Или сигнализировать об этом, например, открытием отдельного диалога или всплывающим сообщением SystemTray + звуковое оповещение. Тогда оператор сможет сам открывать GUI и разобраться с проблемой.
Записан
AlexEx
Чайник
Offline
Сообщений: 76
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #17 :
Апрель 25, 2019, 11:40 »
Да CloseEvent и так заблокирован, а перемещение почти тоже - см. выше. А вот соседствующие в меню пункты Закрыть окно и Убить приложение - это жесть. Конечно, последнее с подверждением, но все мы знаем, как на автомате жмется OK.
Звук в свое время тоже был опробован, специфика не позволила использовать.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #18 :
Апрель 25, 2019, 12:02 »
Цитата: AlexEx от Апрель 25, 2019, 11:40
Да CloseEvent и так заблокирован, а перемещение почти тоже - см. выше. А вот соседствующие в меню пункты Закрыть окно и Убить приложение - это жесть. Конечно, последнее с подверждением, но все мы знаем, как на автомате жмется OK.
Звук в свое время тоже был опробован, специфика не позволила использовать.
Ну еще как вариант, можно открывать главное окно в fullscreen (QWidget::showFullScreen), тогда заголовка окна не будет вообще.
Записан
AlexEx
Чайник
Offline
Сообщений: 76
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #19 :
Апрель 25, 2019, 12:15 »
А заголовка главного окна и так нет, меню присутствует в иконке окна из панели инструментов. Окон много и некоторые должны иметь заголовки. Идея убрать системные заголовки и написать свои тоже была, но поскольку это не решает проблемы меню из панели инструментов, пока отложена.
Записан
AlexEx
Чайник
Offline
Сообщений: 76
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #20 :
Апрель 25, 2019, 13:07 »
Итого, похоже варианта всего два:
1. Повесить демона, перезапускающего UI при его закрытии (самое простое, но не очень красивое).
2. Взять готовый простейший WM и допилить его до нужного состояния (тут могут быть проблемы с сертификацией под SE).
Я, честно говоря, рассчитывал, что найдутся люди, поработавшие с библиотеками libflycore, libflyui, может в них что есть. Никакого описания их я пока не нашел :-(.
Спасибо за обсуждение.
Записан
qate
Супер
Offline
Сообщений: 1177
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #21 :
Апрель 25, 2019, 13:21 »
Цитата: AlexEx от Апрель 25, 2019, 13:07
1. Повесить демона, перезапускающего UI при его закрытии (самое простое, но не очень красивое).
не нужен демон, достаточно bash скрипта - просто цикл перезапуска
это полезно и при падениях программы
я так и делаю
Записан
AlexEx
Чайник
Offline
Сообщений: 76
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #22 :
Апрель 25, 2019, 13:31 »
Ну это дело вкуса :-) Мне проще написать программу на C-ях. Да и все, что описано - это лишь вершина айсберга. Надо будет отслеживать много еще чего.
Записан
Dimas
Чайник
Offline
Сообщений: 50
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #23 :
Апрель 25, 2019, 18:48 »
Цитата: AlexEx от Апрель 25, 2019, 10:55
Попробую объяснить, что и для чего. Есть самописная SCADA система 1999-го года рождения. Технологический процесс неважен. Все в ней работает как надо, что много раз проверено. Вот только весь пользовательский интерфейс рабочих мест операторов сделан под Windows (сначала NT 4.0, потом XP, потом Windows 7). Теперь у нас импортозамещение и в список разрешенных ОС Windows больше не входит (а ведь NT 4.0 когда-то входила), а вот Astra Linux SE входит. И показалось, что она наиболее вменяемая, так что надо портировать. Ошибки оператора могут стоить ну очень дорого. Отсюда и весь наезд.
Установите wine и запускайте старые исполняемые файлы. Мега-костыль, зато заново не надо переписывать и отлаживать код. Есть товарищи, которые на AstraLinux также запускают боевую программу, только тсс. Они об этом стесняются говорить военным.
Записан
qt 4.8.6, qt 5.12.4
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #24 :
Апрель 26, 2019, 08:10 »
Цитата: AlexEx от Апрель 25, 2019, 11:23
Дело в том, что при случайном закрытии пользовательского интерфейса оператор может проморгать важное событие. Прокурор-то его потом в архиве найдет :-).
И отсюда вывод - не позволять закрывать! И начинается "борьба с ОС" - куча хлопот "зато" сомнительный результат. Думается такой подход бесперспективен. В конце-концов оператор может и насвистеть типа "да ничего я не проморгал, это свет рубанули!".
Стоит поискать др пути обеспечения (необходимой) надежности. Напр при следующем запуске вываливать окно что, мол, прощелкал, или даже восстанавливаться. Словом, не позволять просто так вернуться к нормальной работе пока проблема не решена. А "держать не пущать" - дело тухлое.
Записан
vic57
Чайник
Offline
Сообщений: 90
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #25 :
Апрель 26, 2019, 09:16 »
Цитата: AlexEx от Апрель 25, 2019, 13:07
Итого, похоже варианта всего два:
1. Повесить демона, перезапускающего UI при его закрытии (самое простое, но не очень красивое).
2. Взять готовый простейший WM и допилить его до нужного состояния (тут могут быть проблемы с сертификацией под SE).
Я, честно говоря, рассчитывал, что найдутся люди, поработавшие с библиотеками libflycore, libflyui, может в них что есть. Никакого описания их я пока не нашел :-(.
Спасибо за обсуждение.
я делал такие вещи в тайловых WM. попробуйте dwm - самый простой
Записан
qate
Супер
Offline
Сообщений: 1177
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #26 :
Апрель 26, 2019, 11:08 »
Цитата: vic57 от Апрель 26, 2019, 09:16
попробуйте dwm - самый простой
интересно как к этому отнесутся сами пользователи программы ? )
им будет неудобно, все же привыкли к обычным проведениям окон, мозг вынесут разработчику
если только не предполагается использовать комп для одной программы ТС
Записан
AlexEx
Чайник
Offline
Сообщений: 76
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #27 :
Апрель 26, 2019, 11:19 »
Все это - не замена существующего ПО, это - новые системы для той же технологии. Про "свет рубанули" - все питается от двух независимых сетей при УПС величиной с гору. А оператор, к сожалению, активно участвует в тех процессе. Так свыше предопределено.
Записан
AlexEx
Чайник
Offline
Сообщений: 76
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #28 :
Апрель 26, 2019, 11:21 »
ЗЫ как всегда
У Астры обнаружился kiosk-mode. Вроде-бы для таких вот случаев. Буду смотреть.
Записан
vic57
Чайник
Offline
Сообщений: 90
Re: Как запретить закрытие окон под Astra Linux
«
Ответ #29 :
Апрель 26, 2019, 12:14 »
Цитата: qate от Апрель 26, 2019, 11:08
Цитата: vic57 от Апрель 26, 2019, 09:16
попробуйте dwm - самый простой
интересно как к этому отнесутся сами пользователи программы ? )
им будет неудобно, все же привыкли к обычным проведениям окон, мозг вынесут разработчику
если только не предполагается использовать комп для одной программы ТС
именно так и делается в серьезных системах - все, что не разрешено - запрещено
Записан
Страниц:
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...