В настоящее время я работаю над приложением, которое запускает отдельные процессы, которые отображают дополнительные диалоги. Функция, которую я пытаюсь реализовать, - это симуляция модального поведения этих диалогов. В частности, мне нужно, чтобы приложение прекратило обработку всего ввода, как мыши, так и клавиатуры, при запуске диалога и возобновило работу, когда оно закрыто.
Не так важно, чтобы диалог оставался поверх приложения, хотя, если вы можете подсказать, как это сделать, не прибегая к поведению Always-On-Top, это также было бы неплохо.
Отметим, что приложение компилируется как под Windows, так и под Linux. Кроме того, это не вариант для непосредственного запуска диалогов. Они находятся в отдельных исполняемых файлах. Кроме того, приложение представляет собой довольно сложную часть программного обеспечения, поэтому отключение виджетов по отдельности не вариант или, по крайней мере, не очень жизнеспособный.
Я нашел функции lock () и unlock () в классе QApplication в Qt 3.3. В настоящее время мы используем Qt 4.5, который, похоже, не имеет этого API. На самом деле класс QApplication Qt 4.5, по-видимому, также не предоставляет доступ к циклу событий.
Подводя итог: Как отключить / включить пользовательский ввод в приложении Qt, сочетания клавиш мыши и клавиатуры?