Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: crossly от Декабрь 16, 2008, 10:39



Название: запрет сворачивания окна
Отправлено: crossly от Декабрь 16, 2008, 10:39
собственно сабж....


Название: Re: запрет сворачивания окна
Отправлено: Tonal от Декабрь 16, 2008, 11:07
QHideEvent?


Название: Re: запрет сворачивания окна
Отправлено: Sergeich от Декабрь 16, 2008, 14:16
Qt::Window
| Qt::WindowMaximizeButtonHint


Название: Re: запрет сворачивания окна
Отправлено: crossly от Декабрь 16, 2008, 17:27
Qt::Window
| Qt::WindowMaximizeButtonHint
пробовал.... пропадает загаловок окна вообще....


Название: Re: запрет сворачивания окна
Отправлено: Rcus от Декабрь 16, 2008, 17:35
Код
C++ (Qt)
setWindowFlags(windowFlags() ^ Qt::WindowMinimizeButtonHint);


Название: Re: запрет сворачивания окна
Отправлено: Detonator от Декабрь 16, 2008, 20:00
собственно сабж....

А смысл? Команде "Свернуть все окна" пофиг, оне не сворачивает все окна как можно подумать, а просто выносит окно десктопа поверх всех окон и те остаются развернуты, но не видны.


Название: Re: запрет сворачивания окна
Отправлено: crossly от Декабрь 17, 2008, 10:44
собственно сабж....

А смысл? Команде "Свернуть все окна" пофиг, оне не сворачивает все окна как можно подумать, а просто выносит окно десктопа поверх всех окон и те остаются развернуты, но не видны.
зесь ты немного не прав.... WindowState показал minimized после "Свернуть все окна"


Название: Re: запрет сворачивания окна
Отправлено: Detonator от Декабрь 17, 2008, 12:09
ну статус она тебе какой хочешь покажет, а по факту сворачивания нет. Т.е. полный цикл всех сообщений как при сворачивании не происходит. И запретить это возможности тоже нет.


Название: Re: запрет сворачивания окна
Отправлено: Kew от Март 13, 2010, 07:28
В таком случае, помогите сообразить как отследить событие десктопа по "Свернуть все окна".
И если оно происходит, ТОПим наше приложение. Или даже просто обновление или активации приложения хватит?
Вобщем... как же отследить событие десктопа о свёртывании всех окон. Действительно QHideEvent показывает, что при этом событии не происходит свёртывания приложения.
Прошарил гугл.. ничего стоющего ненашёл....
У меня приложение, работает в нескольких режимах, в свободном, всегда поверх всех окон, всегда внизу всех окон... При "Поверх всех окон", естественно нужда отпадает.
А что же делать при остальных двух режимах?
Остаётся отловить событие.
Есть у кого предложения как это реализовать ???


Название: Re: запрет сворачивания окна
Отправлено: Alex Custov от Март 13, 2010, 11:56
В таком случае, помогите сообразить как отследить событие десктопа по "Свернуть все окна".

Под какой ОС? В Linux/NETWM - _NET_SHOWING_DESKTOP.


Название: Re: запрет сворачивания окна
Отправлено: Alex Custov от Март 13, 2010, 11:56
Команде "Свернуть все окна" пофиг, оне не сворачивает все окна как можно подумать, а просто выносит окно десктопа поверх всех окон и те остаются развернуты, но не видны.

Как работает "показать desktop" - implementation defined, просто исходя из наличия нескольких реализаций на нескольких ОС.


Название: Re: запрет сворачивания окна
Отправлено: Kew от Март 15, 2010, 05:47
Под какой ОС? В Linux/NETWM - _NET_SHOWING_DESKTOP.
Как работает "показать desktop" - implementation defined, просто исходя из наличия нескольких реализаций на нескольких ОС.

пишу под виндовс, а вообще не плохобыло бы показать пример как для начинающих  :)
как вообще сделать такое?

Вот нашёл немного инфы по событиям(только это для линухов помоему...):
Код:
_NET_SHOWING_DESKTOP desktop, CARDINAL/32

Some Window Managers have a "showing the desktop" mode in which windows are hidden, and the desktop background is displayed and focused. If a Window Manager supports the _NET_SHOWING_DESKTOP hint, it MUST set it to a value of 1 when the Window Manager is in "showing the desktop" mode, and a value of zero if the Window Manager is not in this mode.
If a Pager wants to enter or leave the mode, it MUST send a _NET_SHOWING_DESKTOP client message to the root window requesting the change:
_NET_SHOWING_DESKTOP
  message_type = _NET_SHOWING_DESKTOP
  format = 32
  data.l[0] = boolean 0 or 1
  other data.l[] elements = 0
The Window Manager may choose to ignore this client message.

Я так понмаю, что нужно хватать события с виндовс менеджера...
Но как??? пример очень желателен...
Но, как это использовать в моей цели?
а платформа такова qt4.6, win xp...7 


Название: Re: запрет сворачивания окна
Отправлено: insamo от Январь 07, 2011, 09:05
Пишу приложение. Тож надо запретить сворачивание, чтобы вообще не сворачивалось, даже при нажатии win+d ctrl+d.

ИМХО надо копать в сторону отлова события minimize, а потом просто восстанавливать окно



Название: Re: запрет сворачивания окна
Отправлено: ufna от Январь 07, 2011, 14:34
Не думаю что "свернуть все окна" можно обойти простыми путями в винде. Ибо тогда суть сией кнопочки теряется. И, как уже сказали, это просто событие "рабочий стол пустить поверх".


Название: Re: запрет сворачивания окна
Отправлено: insamo от Январь 08, 2011, 11:13
отлов события minimize и замено его maximize не помогает(((

Люди добрые куда копать?


Название: Re: запрет сворачивания окна
Отправлено: SABROG от Январь 08, 2011, 13:47
Люди добрые куда копать?
Никуда. Даже для Windows на чистом WinAPI все варианты через одно место. Причем некоторые из них не переносятся даже внутри семейства windows с XP на Vista, с Vista на Win7.


Название: Re: запрет сворачивания окна
Отправлено: insamo от Январь 19, 2011, 08:34
я как-то видел прогу, календарь который какбы сливался с рабочим столом(эффект стекла), так вот он не сворачивался. Значит есть решение сей проблемы


Название: Re: запрет сворачивания окна
Отправлено: GreatSnake от Январь 19, 2011, 09:01
Цитировать
Значит есть решение сей проблемы
Конечно есть - нужно просто отказаться от оконного менеджера.
Только в этом случае проблем будет ещё больше.


Название: Re: запрет сворачивания окна
Отправлено: insamo от Январь 19, 2011, 09:07
календарь был доказательством что даже с "оконным менеджером" все может получится или я что - то упустил, не понял ход твоих мыслей


Название: Re: запрет сворачивания окна
Отправлено: GreatSnake от Январь 19, 2011, 09:37
А откуда такая уверенность, что календарь использовал оконный менеджер?


Название: Re: запрет сворачивания окна
Отправлено: insamo от Январь 19, 2011, 09:41
ааа, терь понятно, а какие проблемы могут возникнуть буз оконного менеджера?


Название: Re: запрет сворачивания окна
Отправлено: GreatSnake от Январь 19, 2011, 09:54
Ну, как минимум, самому придётся отрисовывать декорации и реализовывать move/resize.


Название: Re: запрет сворачивания окна
Отправлено: insamo от Январь 19, 2011, 10:02
я в принципе сейчас так и делаю(рисую кнопки сам на QGrapicsScene но родитель у меня QGraphicsWidget), дай наводку или пример простенького приложения без оконного менеджера


Название: Re: запрет сворачивания окна
Отправлено: ufna от Январь 19, 2011, 10:22
У меня есть подозрение, что для QtGUI обязан быть оконный менеджер


Название: Re: запрет сворачивания окна
Отправлено: dd от Январь 19, 2011, 10:54
Сейчас под рукой винды нет, но первое, что приходит в голову - если по Win+D сообщения о сворачивании не шлются, а просто десктоп пуляется на передний план, сделать стиль окна - всегда поверх всех.

Для этого нужно получить hWnd (QWidget::winId ()) виджета главного окна и выставить с помощью функции WinApi (вроде SetWindowLong функция, см MSDN).
Только не забыть заэкранировать этот код с помощью

#if defined(Q_WS_WIN)
//...
#endif

PS Вот нашел в яндексе. Тут про стили:
http://forum.oszone.net/post-466451.html


Название: Re: запрет сворачивания окна
Отправлено: insamo от Январь 19, 2011, 11:37
Поверх всех не подет, приложение на весь экран, это типа замена шела, но надо чтобы трей было видно


Название: Re: запрет сворачивания окна
Отправлено: dd от Январь 19, 2011, 11:43
Ты случаем не локер для компа делаешь?
Я давно писал для интернет кафе такое.
Написал простенький драйвер для клавиатуры, который жестоко отрезал системные комбинации,
такие как Win+U и тд.

--------------

Не понял про трей. Причем здесь это? Трей будет виден, если ты его не перекроешь своим окном.


Название: Re: запрет сворачивания окна
Отправлено: insamo от Январь 19, 2011, 11:49
ага локер, сорри я перепутал не трей а панель задач, и я думал что ты мне предложишь заменить explorer на свой шел поэтому стразу предупредил


Название: Re: запрет сворачивания окна
Отправлено: dd от Январь 19, 2011, 11:59
Задача не совсем ясна.
То есть нужно убрать рабочий стол, а оставить панель задач?
Это в разблокированном состоянии? Смысл какой?
Можно в настройках реестра сделать так, чтобы значков не было на рабочем столе.

По поводу взломов со стороны юзеров - пока я не сделал дряйвер клавы, взламывали порстоянно.
Например по Win+U они как-то попадали в справку, а оттуда открывался эксплорер - дальше диск C и тд.
И это на XP =)
Кстати прога моя была вместо експлорера.


Название: Re: запрет сворачивания окна
Отправлено: insamo от Январь 19, 2011, 12:06
У нас защита от злобных юзверев другая, мы просто поставили Shadow Defender
А свой шел делаю для красоты и для сбора статистики в дальнейшем которая поститься на сайт автоматом.

А свой локер на чем писал?


Название: Re: запрет сворачивания окна
Отправлено: dd от Январь 19, 2011, 12:15
WinApi чистый.
Плюс дрова, тоже апи.
Си + ассемблер.


Правда это было лет 7 назад.


Название: Re: запрет сворачивания окна
Отправлено: insamo от Январь 19, 2011, 12:27
ясно, а можешь мне исходники скинуть?


Название: Re: запрет сворачивания окна
Отправлено: dd от Январь 19, 2011, 12:34
Чего именно?
У меня столько компов сменилось, что я даже не помню.
Я даже не помню, как оно все называлось.
Хотя возможно проект драйвера где-то и можно найти.

А чего именно интересует? Могу аську дать, поспрашиватьможешь. Двести стодвадцатьвосемь семьсот.


Название: Re: запрет сворачивания окна
Отправлено: insamo от Январь 19, 2011, 13:42
окей буду иметь ввиду спасибо, как-нить постучусь