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

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

Страниц: 1 2 3 [4]   Вниз
  Печать  
Автор Тема: Открыть поверх окон  (Прочитано 29340 раз)
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #45 : Июль 10, 2016, 12:21 »

А в Линуксе или в Mac OS, как себя ведет Qt::Tool?
Записан
Bepec
Гость
« Ответ #46 : Июль 10, 2016, 12:27 »

Окно tool выше своего родителя, так что всё по логике. А вы создаёте отдельное окно, что и перекрывает его.
А то, что вы хотите - не имеет названия.
В качестве пруфа - выдержка из Assistant'a:
Цитировать
Indicates that the widget is a tool window. A tool window is often a small window with a smaller than usual title bar and decoration, typically used for collections of tool buttons. If there is a parent, the tool window will always be kept on top of it. If there isn't a parent, you may consider using Qt::WindowStaysOnTopHint as well. If the window system supports it, a tool window can be decorated with a somewhat lighter frame. It can also be combined with Qt::FramelessWindowHint. On OS X, tool windows correspond to the Floating class of windows. This means that the window lives on a level above normal windows; it impossible to put a normal window on top of it. By default, tool windows will disappear when the application is inactive. This can be controlled by the Qt::WA_MacAlwaysShowToolWindow attribute
Вкратце - всегда поверх родителя. К остальным окнам оно отношения не имеет.

PS работает W7 x64, Qt 4.7.2/5.6.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #47 : Июль 10, 2016, 13:01 »

А в Линуксе или в Mac OS, как себя ведет Qt::Tool?
Про линукс ничего не знаю, а на Mac это штатное поведение
Цитировать
On OS X, tool windows correspond to the Floating class of windows. This means that the window lives on a level above normal windows; it impossible to put a normal window on top of it.
Зато диалоги и попапки его перекрывают.

Справедливости ради - и на OSX Qt::Tool у меня почему-то не сработал Улыбающийся Пришлось написать неск строк в какаве (тамошнее API). Ну там легко т.к. я точно знал что в ОС это есть. Может уже и в Qt пофиксили

Окно tool выше своего родителя, так что всё по логике.
Так это справедливо для любого окна  Улыбающийся  

А вы создаёте отдельное окно, что и перекрывает его.
А то, что вы хотите - не имеет названия.
В качестве пруфа - выдержка из Assistant'a:
Я там вверху для Вас жирным выделил Улыбающийся
Записан
Bepec
Гость
« Ответ #48 : Июль 10, 2016, 15:20 »

Я вам ясно сказал что стандартный функционал этого не предусматривает.
А вы мне тычете платформозависимым функционалом и говорите "Как же так, почему оно не работает в других ОС"? Мб потому что это платформозависимый функционал? Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #49 : Июль 10, 2016, 16:29 »

Я вам ясно сказал
Вам лучше не говорить, а слушать  Улыбающийся
Записан
Bepec
Гость
« Ответ #50 : Июль 10, 2016, 18:25 »

А лучше логически мыслить.
Фишка одной ОС, не поддерживаемая во всех других - это исключение. И поэтому говорить о Windows "о боже оно не поддерживает фишку MAC OS" - это лицемерие Улыбающийся
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #51 : Июль 10, 2016, 22:04 »

Запустите пример и создайте окно Qt::Tool выбрав бубочку. Теперь активируйте окно "Test" и убедитесь что оно успешно перекрывает окно Tool  Плачущий

В этом примере, в принципе, так и должно быть - поскольку окно "Test" не имеет родителя, то оно как бы "глобально".
Я пробовал и другие модификации, и вроде как в 10-ке все как надо...
Проверю завтра в 7-ке на работе еще.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #52 : Июль 11, 2016, 10:23 »

В этом примере, в принципе, так и должно быть - поскольку окно "Test" не имеет родителя, то оно как бы "глобально".
Не должно. Нормальный оконный менеджер умеет/понимает "слои" окон - любое окно из верхнего слоя "выше" (неперекрываемо) любым окном нижнего. А окна одного слоя перекрываются в обычном порядке. А кто там родитель - это др разговор. В том же примере создайте просто Qt::Window - и тоже окно упр-я его не перекроет т.к. оно его родитель. Но желаемого поведения палеток на этом не получить.
Записан
Bepec
Гость
« Ответ #53 : Июль 11, 2016, 13:07 »

Это в идеологии mac os так сделано, насколько я понял, не более.

В идеологии нормального менеджера, каждое окно может быть как выше так и ниже.
3 стандартных слоя - выше всех, стандартное окно, ниже всех.
И на слое стандартных окон возможны уже tool окна, которые являются его детьми.

При этом каждое окно - равнозначная сущность, которая может быть или 1 или 2 или 3.
Не видел ни 1 программы с вашим "поведением" окон на linux. Пожалуйста развейте мои сомнения.

Cлоевая система окон неудобна для пользователя. Ведь при выборе окна нижнего уровня, вы его никогда не увидите, пока не закроете все уровни выше. А какой простор это даёт для зловредов. Более того, неудобно будет и при разработке приложения - ведь возможно более десяти окон на разных слоях, что лишь запутывает пользователя, не давая ему преимуществ.

И таки да - пользователь всегда работает с одним окном. Чтобы работать в двух одновременно, нужны уже 2 мышки, 2 клавитуры, 4 руки Веселый 2 и более окон удобны лишь для наблюдения/получения информации.
Записан
Страниц: 1 2 3 [4]   Вверх
  Печать  
 
Перейти в:  


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