Название: Скрытие кнопок window title (или запрет их работы) Отправлено: vintik от Апрель 10, 2013, 18:32 Формулировка задачи следующая:
настроить виджет, так чтобы он был всегда поверх всех окон, у него нельзя было бы изменять размер, нельзя закрыть или скрыть. У меня Kubuntu 12.10 До конца задачу решить не удалось. Перепробовал всякие разные советы, с разных форумов, в том числе и с нашего (тема поднималась). Однако, не работает как надо. Код: setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowStaysOnTopHint); Такая связка позволяет сделать всё, кроме запрета сворачивания. (т.е. остаётся только эта кнопка в title bar) Как скрыть эту кнопку - не знаю... Бог с ним, со скрытием кнопки. Как её задизэйблить или сделать так, чтобы она не работала - тоже не знаю. Если пробовать игнорить события QEvent::WindowStateChang или QEvent::Hide, толку никакого - виджет сначала скрывается а потом только попадаю в обработчики события (причём неважно будь то event, changeEvent или fllterEvent (это в случае, если на виджет сделать installEventFilter)) Видимо, я чего-то не догоняю, наставьте на путь истинный. Спасибо Название: Re: Скрытие кнопок window title (или запрет их работы) Отправлено: Old от Апрель 10, 2013, 18:36 Если пробовать игнорить события QEvent::WindowStateChang или QEvent::Hide, толку никакого - виджет сначала скрывается а потом только попадаю в обработчики события (причём неважно будь то event, changeEvent или fllterEvent (это в случае, если на виджет сделать installEventFilter)) Окно сворачивает оконный менеджер, приложение об этом только уведомляется! Тут нужно разбираться с вашем оконным менеджером.Название: Re: Скрытие кнопок window title (или запрет их работы) Отправлено: vintik от Апрель 10, 2013, 18:49 Если пробовать игнорить события QEvent::WindowStateChang или QEvent::Hide, толку никакого - виджет сначала скрывается а потом только попадаю в обработчики события (причём неважно будь то event, changeEvent или fllterEvent (это в случае, если на виджет сделать installEventFilter)) Окно сворачивает оконный менеджер, приложение об этом только уведомляется! Тут нужно разбираться с вашем оконным менеджером.Но ведь есть же возможность отловить событие закрытия виджета и проигнорить его? Код: void some_widget::closeEvent(QCloseEvent *event) Почему так же нельзя сделать со сворачиванием? Мне кажется должна быть какая-то возможность до передачи евента оконному менеджеру отловить его... Название: Re: Скрытие кнопок window title (или запрет их работы) Отправлено: vintik от Апрель 10, 2013, 18:53 Методом научного тыка удалось подобрать костыльное решение.
Но идеалогически оно, имхо, неверно В конструкторе делаем: Код: setWindowState(Qt::WindowMaximized); и затем Код: void some_widget::changeEvent(QEvent *event) Ну что происходит понятно, при нажатии на злополучную кнопку - окно сворачивается. Об этом приходит евент и мы тут же окно разворачиваем Название: Re: Скрытие кнопок window title (или запрет их работы) Отправлено: Bepec от Апрель 10, 2013, 19:52 Апи системы используй. Тут по другому никак, вроде. Под винду бы подсказал, там пара строк, а вот никсы для меня темень и мракобесие.
|