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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Особый режим работы окна приложения  (Прочитано 4936 раз)
vintik
Гость
« : Декабрь 27, 2013, 19:47 »

Привет, товарищи!

Есть приложение. Работать оно должно под 7кой и иксами.
У приложения есть главное окно.
Главному окну необходимо задать некий режим работы:
 - чтобы оно отображалось во весь экран
 - чтобы его нельзя было свернуть/закрыть комбинациями клавиш, характерными для графической среды
 - чтобы его нельзя было бы заменить другим окном (запретить возможность смены текущего приложения через Alt+tab)

Т.е. по сути окно должно "заслонить" собою рабочий стол и панель задач и только нажатие какой-нибудь кнопки "выход" может снова "открыть" рабочий стол.
То что удалось сделать выглядит не совсем подходящим.

Код:
main_window::main_window(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::main_window)
{
    ui->setupUi(this);
    showFullScreen();
    setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
}

void main_window::changeEvent(QEvent *event)
{
    if(event->type() == QEvent::WindowStateChange)
    {
        if (isMinimized())
        {
            showFullScreen();
            return event->ignore();
        }
    }

    return QMainWindow::changeEvent(event);
}

Да, окно развёрнуто во весь экран, да, оно всегда самое верхнее... но мне кажется, что можно сделать лучше

Подскажите, есть ли решение на Qt?
Если нет, то куда копать применительно к иксам и винде?
Или хотя бы как искать ответ в гугле. Может быть у подобного режима есть какое-то англоязычное специальное название?
Записан
ammaximus
Гость
« Ответ #1 : Декабрь 27, 2013, 20:01 »

Уточните цели. Инфобезопасность или как в компьютерном клубе, чтобы дети не лазили? Содержимое окна форма или рисуется (2d/opengl)?
Что именно не устраивает сейчас? Блокировка системных комбинаций отдельный разговор и к Qt отношения не имеет.
Записан
vintik
Гость
« Ответ #2 : Декабрь 28, 2013, 12:22 »

Уточните цели.

Приложение должно быть установлено на рабочем месте оператора. И у оператора не должно быть возможности как-то свернуть приложение
или перевести его в фон. Т.е. у оператора перед глазами должен быть или выключенный монитор, или запущенное приложение.
Программа представляет собой QMainWindow, центральный виджет которого использует opengl для отображения картинки

Что именно не устраивает сейчас?

Текущее решение выглядит "топорно" и вряд ли оно корректно для поставленной цели..
Думаю, что можно сделать лучше
« Последнее редактирование: Декабрь 28, 2013, 12:25 от vintik » Записан
Bepec
Гость
« Ответ #3 : Декабрь 28, 2013, 16:54 »

В винде заменяйте шелл и отключайте нафиг все левые контролирующие фишки типа диспетчера задач.

В linux хз.
Записан
vintik
Гость
« Ответ #4 : Декабрь 28, 2013, 17:16 »

В винде заменяйте шелл и отключайте нафиг все левые контролирующие фишки типа диспетчера задач.

Спасибо, буду пробовать!
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #5 : Декабрь 29, 2013, 10:42 »

еще можно попробовать установить системные хуки на клаву и прехватывать ввод с клавы, фильтровать что то типа alt+tab,ctrl+alt+del и т.п. клав.сокращения и игнорировать их, запретитьь передавать дальше системе. при выходе из приложения убирать эти хуки и ось будет работать как прежде.
Записан
Bepec
Гость
« Ответ #6 : Декабрь 29, 2013, 11:56 »

Не получится на винде хуки такие ставить.
Система хуков Windows в этом случае не поможет. Ибо первый хук - всегда системный. Потому ток отключать диспетчер задач.
Записан
vintik
Гость
« Ответ #7 : Декабрь 29, 2013, 23:37 »

по-поводу хуков нашёл вот такой пост http://www.codeguru.com/cpp/misc/misc/keyboard/article.php/c433/Disabling-the-AltTab-key-combination.htm.
Хз работает ли, буду на работе проверять.

Ещё была мысль про grabKeyboard(). Но похоже, что это ложный путь..
Я правильно понимаю, что комбинации клавиш графического менеджера, кутешный виджет заграбать не может?

Кстати, нашёл название режима работы апликухи, который мне нужен) Kiosk Mode
« Последнее редактирование: Декабрь 30, 2013, 12:55 от vintik » Записан
vbv
Чайник
*
Offline Offline

Сообщений: 59


Просмотр профиля
« Ответ #8 : Декабрь 30, 2013, 05:45 »

Под линухами у меня была подобная задача.
Заменил wm на мною же правленый evilvm и в нем и запускаю прогу.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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