Qt4: сделать полноэкранное окно невозможным для обхода (экран блокировки)? - PullRequest
2 голосов
/ 22 июля 2011

Мое приложение представляет собой экран блокировки ОС (например, экран блокировки GDM или KDE), поэтому я пытаюсь заставить его работать как единое целое.

Я пытаюсь сделать окно моего приложения выше все другие окна и отключить / перехватить все сочетания клавиш (ALT-TAB, CTRL-ALT-D и т. д.), которые могут привести к его исчезновению.

Есть ли способ сделать это?Я уверен на 100%, поскольку существуют экраны блокировки с графическим интерфейсом, но я просто не могу найти место, чтобы посмотреть ...

Ответы [ 3 ]

2 голосов
/ 22 июля 2011

Я не знаю, как это сделать с Qt, но то, что вы ищете, называется захват .Вы можете взять устройство ввода указателя , а также клавиатуру .

Редактировать: Просматривая документы Qt4, вы пыталисьиспользовать QWidget :: grabMouse ?Похоже, эта функция делает именно то, что вы хотите.

0 голосов
/ 18 июня 2012

наследовать Qwidget класс с параметром Qt::WindowStaysOnTopHint см. Ниже

myclass::myclass(QWidget *parent) : QWidget(parent,Qt::WindowStaysOnTopHint)
0 голосов
/ 23 июля 2011

Я не знаю, является ли это лучшим решением, но вы можете попробовать обработчик событий, используя QObject::installEventFilter().

Если вы используете Windows, вы можете установить фильтр событий, который обрабатывает сообщения, где event->type() == QEvent::WinEventAct.

Я не особо разбираюсь в других ОС, но, вероятно, в Qt тоже есть что-то для этого.

...