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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Размещение стороннего окна на форме QT  (Прочитано 9585 раз)
Limetris
Гость
« Ответ #15 : Февраль 21, 2014, 14:32 »

Не замечали != нет.
Дерзайте, пробуйте, отписывайтесь. Мб найдете решение. а мб найдете грабли и расскажите своим последователям.

Одновременно, конечно не получится.
Но проблем будет куча. Это я гарантирую.

Я прекрасно осознаю чем это может грозить, поэтому сейчас ищу механизмы и тестирую их.
Естественно, что при неудаче это введено не будет.
Однако существует проблема, которую необходимо решить, не таким так иным способом.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #16 : Февраль 21, 2014, 14:35 »

В догонку
фокус может принадлежать только одному элементу в системе, и переходя на одно окно, оно автоматически пропадает на другом.
И тут не будет разницы окно в окне или два окна по отдельности.
нужно различать "фокус окна" и "фокус ввода". Последний определяется GUI-тулкитом приложения, а не системой.
Чтобы приложение активировало этот фокус на конкретном элементе, главное окно должно сначала получить фокус окна от системы и уже input-manager тулкита активирует элемент с фокусом (посылает ему событие или ещё как-нибудь).
Так вот без дополнительных усилий встроенное окно фокус никогда не получит и input-manager встроенного приложения не отработает.
К тому же по нажатию [Tab] из одного окна в другое никогда не попадёшь)
Вот для понимания.
« Последнее редактирование: Февраль 21, 2014, 14:38 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Limetris
Гость
« Ответ #17 : Февраль 21, 2014, 14:46 »

нужно различать "фокус окна" и "фокус ввода". Последний определяется GUI-тулкитом приложения, а не системой.
Чтобы приложение активировало этот фокус на конкретном элементе, главное окно должно сначала получить фокус окна от системы и уже input-manager тулкита активирует элемент с фокусом (посылает ему событие или ещё как-нибудь).
Так вот без дополнительных усилий встроенное окно фокус никогда не получит и input-manager встроенного приложения не отработает.
К тому же по нажатию [Tab] из одного окна в другое никогда не попадёшь)
Вот для понимания.

Теперь я понял о чем ты  Улыбающийся
Согласен, это одна из следующих возможных проблем, и если она возникнет, тогда буду думать решать ее или остановиться.
Сейчас меня интересует только размещение одного окна в другом средствами QT, даже ести там не будет фокуса, уже хорошо  Смеющийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #18 : Февраль 21, 2014, 15:01 »

Хотя уже задумываюсь, что лучше сейчас это пересмотреть, чем потом рожать ёжиков ))
Как говориться, инициатива **** инициатора Смеющийся
Приятно видеть что человек с опытом.

Конкретно "по делу" имею сказать немного - да, Qt знает/помечает свои (т.е. созданные от QWidget) окна и считается с возможностью чужого, в этом случае возвращается "событие не обработано" и управление отдается др обработчикам что зарегистрированы для этого события. О том что окно/контрол из одного процесса может быть вообще прилеплено в другой - никогда не слышал в OSX, все списки окон и.т.п. - только в рамках процесса.
Записан
Limetris
Гость
« Ответ #19 : Февраль 21, 2014, 15:16 »

Приятно видеть что человек с опытом.

Конкретно "по делу" имею сказать немного - да, Qt знает/помечает свои (т.е. созданные от QWidget) окна и считается с возможностью чужого, в этом случае возвращается "событие не обработано" и управление отдается др обработчикам что зарегистрированы для этого события. О том что окно/контрол из одного процесса может быть вообще прилеплено в другой - никогда не слышал в OSX, все списки окон и.т.п. - только в рамках процесса.

Спасибо, но опыта мне еще много набираться.

Понятно. Тут есть один момент, захватываемые окна также и обрабатываются теми процессами, которые их породили.
Просто должны находиться где-то не на Desktop-е, а в конкретном окне.
Если очень грубо сказать то в своем "эмуляторе" Desktop-а (аж самому страшно от такого сравнения  Смеющийся).

Надо седня "обнулиться", а потом со свежей головой посмотреть на жопу под другим углом  Смеющийся
Записан
Bepec
Гость
« Ответ #20 : Февраль 21, 2014, 16:39 »

Всё просто. Если вы хотите окна "забирать" у десктопа, тогда вам нужно реализовывать его функционал.
Если же вам нужно просто "манипулировать" окном, тогда уже вам достаточно управления им.

PS не стоит забывать, что все интерфейсы обманывают пользователя Веселый Имитацией трехмерности, красками и прочим Улыбающийся
Записан
Limetris
Гость
« Ответ #21 : Февраль 21, 2014, 16:59 »

Всё просто. Если вы хотите окна "забирать" у десктопа, тогда вам нужно реализовывать его функционал.
Если же вам нужно просто "манипулировать" окном, тогда уже вам достаточно управления им.

PS не стоит забывать, что все интерфейсы обманывают пользователя Веселый Имитацией трехмерности, красками и прочим Улыбающийся

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

Средствами QT без применения WinAPI это возможно?
Записан
Bepec
Гость
« Ответ #22 : Февраль 21, 2014, 17:37 »

НЕТ. ведь вы хотите чужое окно захапать. А чужое окно можно захапать только с разрешения менеджера рабочего стола. А менеджер рабочего стола имеет только платформозависимый апи.
Записан
Limetris
Гость
« Ответ #23 : Февраль 21, 2014, 17:46 »

НЕТ. ведь вы хотите чужое окно захапать. А чужое окно можно захапать только с разрешения менеджера рабочего стола. А менеджер рабочего стола имеет только платформозависимый апи.


Понял. Буду думать...

Но в понедельник, седня все... обнуляться  Смеющийся
Удачных выходных, спасибо!
Записан
OKTA
Гость
« Ответ #24 : Февраль 21, 2014, 17:51 »

Так и делайте на том же уровне WinAPI - но на кросс-платформенность это не претендует

Поэтому я и здесь, надеялся что в QT существует какой-либо свой механизм.

Такая необходимость "себе дороже". Ясно что даже в случае успеха такое окно станет источником многих забот. С др стороны Вы разжигаете/поощряете аппетит пользователя/заказчика - ведь Вы сказали "можно" (а часто хочется и прихвастнуть типа "элементарно" Улыбающийся). Ну так если можно - тогда давайте вводить там данные, получать результаты и.т.д. - иначе что толку с "показа окна"?, И соскочить уже будет не так просто, ведь Вы уже пообещали... Поэтому немедленно упереться рогом типа "низзя!" = лучшее решение

По поводу заказчика, согласен что его надо держать на нужном месте и в меру пресекать полет фантазии ))

Но к сожалению, такая необходимость возникла по моей инициативе, дабы не ломать половину GUI системы чтобы перенести на QT.
Хотя уже задумываюсь, что лучше сейчас это пересмотреть, чем потом рожать ёжиков ))
Как говориться, инициатива **** инициатора Смеющийся




Только не "QT", а "Qt".
И не "говориться", а "говорится"  Смеющийся
Записан
Limetris
Гость
« Ответ #25 : Февраль 24, 2014, 09:15 »

Только не "QT", а "Qt".
И не "говориться", а "говорится"  Смеющийся

Вот спасибо, без этого я бы не выжил  Смеющийся
Записан
OKTA
Гость
« Ответ #26 : Февраль 24, 2014, 09:53 »

Правило хорошего тона  Подмигивающий
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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