Форум программистов, компьютерный форум, киберфорум
Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834

Модальность окон в разных графических оболочках

09.11.2015, 22:20. Показов 2531. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выручайте.
Есть мелкая тестовая программа на Qt из двух форм. Форма1 (на ней есть текстовое поле). Кликаем на текстовое поле - открывается Форма2. Форма2 - модальная. Вроде все просто.

Однако одна и та же программа на разных дистрибутивах работает немного по-разному:
На виртуалке debian 7 (gnome, если не ошибаюсь) вторая, модальная, форма запрещает переключаться на Форму1 через ALT-TAB. И это правильно.
На raspbian (LXDE,openbox) вторая, модальная, форма НЕ запрещает переключение на Форму1 через ALT-TAB. И это неправильно. Из-за этого происходит некорректная работа программы - если на распберри быстро и часто кликать на текстовое поле Формы1, то Форма2 открывается и тут же уходит ЗА форму1 (при последующем клике, который как бы уходит к Форме1 ОПЯТЬ, пока не открылась форма2), чего быть не должно. То есть модальность фактически игнорируется.

Кто-нибудь сталкивался? Что посоветуете протестировать? У забугорников вычитал, что с wine'ом у кого-то была похожая проблема, ибо вайн все окна считал немодальными и ребятам пришлось править исходники вайна... Но это не мой путь. Помогите выкрутиться как-то иначе.

Добавлено через 6 часов 25 минут
Никто?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.11.2015, 22:20
Ответы с готовыми решениями:

Пакет для управления вкладками графических окон (аналог tmux для GUI)
Подскажите, пожалуйста, программу, позволяющую группировать несколько графических окон в одно с дополнительной панелью вкладок. Как tmux...

Модальность диалоговых окон в Word
Что нужно написать в коде, чтобы диалоговые окна становились или модальными или не модальными. Например, я запустил макрос, содержащий...

Книги по создание графических окон???
Люди посоветуйте как начинающему программисту книги по созданию графических окон с помощью WinApi ???

4
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
11.11.2015, 16:46  [ТС]
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Решение крылось в оконном менеджере малинки и образа raspbian. Если образ от производителя и вы еще не шаманили с настройками экрана, то от оконного менеджера openbox откажитесь в пользу metacity. В консоли:
Bash
1
2
3
4
5
6
7
sudo apt-get install metacity #соглашаемся с подтягиванием еще 5 пакетов и ждем установки
sudo apt-get install wmctrl #соглашаемся и ждем установки
sudo update alternatives --config x-window-manager #вводим цифру, под которой значится установленный метасити и жмем ввод
sudo nano /etc/xdg/lxsessions/LXDE/desktop.conf #меняем значение строки window manager(почти в самом начале) на слово metacity
sudo nano /etc/xdg/lxsessions/LXDE-pi/desktop.conf #меняем значение строки window manager(почти в самом начале) на слово metacity
sudo shutdown -r now
wmctrl -m #убеждаемся, что оконный менеджер теперь не openbox, а metacity
0
20 / 12 / 3
Регистрация: 13.08.2015
Сообщений: 75
12.11.2015, 01:16
Не, не надо на оконный менеджер полагаться. Вообще это работает преимущественно в гноме, по крайней мере с привязкой к центру главного окна. Лучше ещё и явно блокировать Форму1 когда открывается Форма2. Удерживать фокус это не поможет, но от действий пользователя защитит.
0
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
12.11.2015, 08:23  [ТС]
i1cu, Я на него и не полагался. Я уже все перепробовал в самом Qt - и с событиями игрался и с модальностью и проект простой для теста собирал. На гноме ОК, а на lxde с openbox - хрень с модальностью. Вот и решил таки сменить wm. Как видим - помогло. Тем более, проект будет жить только на этой плате, поэтому мне такое решение вполне подходит. Оставил свое решение для тех, кого оно тоже устроит.

Однако, мне интересно - какой вы вариант предложите? Как я понимаю, нужно решение в самом коде, чтобы оно не зависело от wm.

Кстати модальность и так блокирует первую форму, но вот не мешает форме1 снова показаться уже после того, как была открыта модальная форма2, если мы быстро и часто кликали по форме1... И при ситуации, когда у юзера только тачскрин, а форма2 уже ушла за форму1 (и обе на весь экран) он ничего не сможет сделать.
0
20 / 12 / 3
Регистрация: 13.08.2015
Сообщений: 75
12.11.2015, 17:15
http://doc.qt.io/qt-5/qwidget.html#setDisabled
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.11.2015, 17:15
Помогаю со студенческими работами здесь

Написать программу с применением графических библиотек, для написания окон программы
Написать программу на си, с применением графических библиотек, для написания окон программы. Создать базу данных, на sql сервере. Сделать...

Создать несколько графических окон, постепенно всплывающих на рабочем столе по окружности, меняя цвет
необходимо создать несколько графических окон, постепенно всплывающих на рабочем столе по окружности,меняя цвет

Создать изображение имеющие 5 графических элементов, 5 разных цветов, и 3 стиля заполнения фигур
Создать изображение имеющие 5 графических элементов, 5 разных цветов, и 3 стиля заполнения фигур. Я начал немного. Кто может, помогите...

Создание 2-х окон разных классов
Доброго дня! Возникла проблемка с регистрацией классов окон. Необходимо создать окно. По нажатию на кнопку в этом окне, должно создаться...

Соединение двух разных окон
Как это сделать? Сверху, слева где хочу применить(там отдельные окна, реализованные в разных файлах, но первый(там где меню) вызывает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru