Russian Qt Forum
Март 28, 2024, 13:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Как запретить закрытие окон под Astra Linux  (Прочитано 24204 раз)
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #15 : Апрель 25, 2019, 11:30 »

Дело в том, что при случайном закрытии пользовательского интерфейса оператор может проморгать важное событие. Прокурор-то его потом в архиве найдет :-). Так что возможность ошибки оператора должна быть сведена к минимуму.
Тогда просто добавьте диалог с запросом подтверждения, если пользователь пытается закрыть окно (выйти из приложения) и запрашивайте два раза, если он это делает при работающем техпроцессе.
Все это делается в обработчике QCloseEvent, в пару строк кода. В документации даже пример такой был.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #16 : Апрель 25, 2019, 11:33 »

PS
To Old.
Техпроцессом управляют совсем другие вычислительные средства, эти машины АРМ - только GUI.
Тогда можно принудительно перезапускать GUI при получении важного сообщения, если он был закрыт. Или сигнализировать об этом, например, открытием отдельного диалога или всплывающим сообщением SystemTray + звуковое оповещение. Тогда оператор сможет сам открывать GUI и разобраться с проблемой.
Записан
AlexEx
Чайник
*
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #17 : Апрель 25, 2019, 11:40 »

Да CloseEvent и так заблокирован, а перемещение почти тоже - см. выше. А вот соседствующие в меню пункты Закрыть окно и Убить приложение - это жесть. Конечно, последнее с подверждением, но все мы знаем, как на автомате жмется OK.
Звук в свое время тоже был опробован, специфика не позволила использовать.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #18 : Апрель 25, 2019, 12:02 »

Да CloseEvent и так заблокирован, а перемещение почти тоже - см. выше. А вот соседствующие в меню пункты Закрыть окно и Убить приложение - это жесть. Конечно, последнее с подверждением, но все мы знаем, как на автомате жмется OK.
Звук в свое время тоже был опробован, специфика не позволила использовать.

Ну еще как вариант, можно открывать главное окно в fullscreen (QWidget::showFullScreen), тогда заголовка окна не будет вообще.
Записан
AlexEx
Чайник
*
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #19 : Апрель 25, 2019, 12:15 »

А заголовка главного окна и так нет, меню присутствует в иконке окна из панели инструментов. Окон много и некоторые должны иметь заголовки. Идея убрать системные заголовки и написать свои тоже была, но поскольку это не решает проблемы меню из панели инструментов, пока отложена.
Записан
AlexEx
Чайник
*
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #20 : Апрель 25, 2019, 13:07 »

Итого, похоже варианта всего два:
1. Повесить демона, перезапускающего UI при его закрытии (самое простое, но не очень красивое).
2. Взять готовый простейший WM и допилить его до нужного состояния (тут могут быть проблемы с сертификацией под SE).
Я, честно говоря, рассчитывал, что найдутся люди, поработавшие с библиотеками libflycore, libflyui, может в них что есть. Никакого описания их я пока не нашел :-(.
Спасибо за обсуждение.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #21 : Апрель 25, 2019, 13:21 »

1. Повесить демона, перезапускающего UI при его закрытии (самое простое, но не очень красивое).

не нужен демон, достаточно bash скрипта - просто цикл перезапуска
это полезно и при падениях программы
я так и делаю
Записан
AlexEx
Чайник
*
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #22 : Апрель 25, 2019, 13:31 »

Ну это дело вкуса :-) Мне проще написать программу на C-ях. Да и все, что описано - это лишь вершина айсберга. Надо будет отслеживать много еще чего.

Записан
Dimas
Чайник
*
Offline Offline

Сообщений: 50



Просмотр профиля
« Ответ #23 : Апрель 25, 2019, 18:48 »

Попробую объяснить, что и для чего. Есть самописная 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 Offline

Сообщений: 11445


Просмотр профиля
« Ответ #24 : Апрель 26, 2019, 08:10 »

Дело в том, что при случайном закрытии пользовательского интерфейса оператор может проморгать важное событие. Прокурор-то его потом в архиве найдет :-).
И отсюда вывод - не позволять закрывать! И начинается "борьба с ОС" - куча хлопот "зато" сомнительный результат. Думается такой подход бесперспективен. В конце-концов оператор может и насвистеть типа "да ничего я не проморгал, это свет рубанули!".

Стоит поискать др пути обеспечения (необходимой) надежности. Напр при следующем запуске вываливать окно что, мол, прощелкал, или даже восстанавливаться. Словом, не позволять просто так вернуться к нормальной работе пока проблема не решена. А "держать не пущать" - дело тухлое.
Записан
vic57
Чайник
*
Offline Offline

Сообщений: 90


Просмотр профиля
« Ответ #25 : Апрель 26, 2019, 09:16 »

Итого, похоже варианта всего два:
1. Повесить демона, перезапускающего UI при его закрытии (самое простое, но не очень красивое).
2. Взять готовый простейший WM и допилить его до нужного состояния (тут могут быть проблемы с сертификацией под SE).
Я, честно говоря, рассчитывал, что найдутся люди, поработавшие с библиотеками libflycore, libflyui, может в них что есть. Никакого описания их я пока не нашел :-(.
Спасибо за обсуждение.

я делал такие вещи в тайловых WM. попробуйте dwm - самый простой
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #26 : Апрель 26, 2019, 11:08 »

попробуйте dwm - самый простой

интересно как к этому отнесутся сами пользователи программы ? )
им будет неудобно, все же привыкли к обычным проведениям окон, мозг вынесут разработчику
если только не предполагается использовать комп для одной программы ТС
Записан
AlexEx
Чайник
*
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #27 : Апрель 26, 2019, 11:19 »

Все это - не замена существующего ПО, это - новые системы для той же технологии. Про "свет рубанули" - все питается от двух независимых сетей при УПС величиной с гору. А оператор, к сожалению, активно участвует в тех процессе. Так свыше предопределено.
Записан
AlexEx
Чайник
*
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #28 : Апрель 26, 2019, 11:21 »

ЗЫ как всегда
У Астры обнаружился kiosk-mode. Вроде-бы для таких вот случаев. Буду смотреть.
Записан
vic57
Чайник
*
Offline Offline

Сообщений: 90


Просмотр профиля
« Ответ #29 : Апрель 26, 2019, 12:14 »

попробуйте dwm - самый простой

интересно как к этому отнесутся сами пользователи программы ? )
им будет неудобно, все же привыкли к обычным проведениям окон, мозг вынесут разработчику
если только не предполагается использовать комп для одной программы ТС

именно так и делается в серьезных системах - все, что не разрешено - запрещено
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.06 секунд. Запросов: 23.