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

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

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


Добрый день.

Требуется разместить окно любого стороннего приложения на форме (или виджете) моего приложения QT.
Handle размещаемого окна известен.

Поиск каких-нибудь механизмов существенных результатов не дал.
У кого есть идеи или решения на этот счет? Также буду благодарен за любой пинок в нужную сторону ))

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


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

Ну "просто так" ОС не позволит иметь окно одного приложения внутри другого. Сначала нужно искать как это делается в OC (напр ActiveX), а потом смотреть чему это соответствует в Qt.

А вообще напрашиваетесь на ответы типа "никак", "хочется - перехочется" и.т.п.  Улыбающийся
Записан
Limetris
Гость
« Ответ #2 : Февраль 21, 2014, 13:15 »


Ну "просто так" ОС не позволит иметь окно одного приложения внутри другого. Сначала нужно искать как это делается в OC (напр ActiveX), а потом смотреть чему это соответствует в Qt.

А вообще напрашиваетесь на ответы типа "никак", "хочется - перехочется" и.т.п.  Улыбающийся


В Windows на уровне в WinAPI это делается не так трудно, на С++ Builder XE проверял, но меня интересует именно QT.
Но за мысль спасибо, сейчас порою и в этом направлении.

P.S. по поводу "никак" и "хочется - перехочется" к сожалению не понял чем напрашивался ))
      Я точно знаю что это возможно, главное желание. А ответ "никак" покажет, что человеку просто не было необходимости это делать.
Записан
Bepec
Гость
« Ответ #3 : Февраль 21, 2014, 13:22 »

Или неоправданно сложно сделать Веселый
Я бы придерживался мнения - просто поместить окно внутри своего окна и "держать" его там. Пользователю в принципе без разницы, окно в окне или окно на окне, главное поведение.
Записан
Limetris
Гость
« Ответ #4 : Февраль 21, 2014, 13:27 »

Или неоправданно сложно сделать Веселый
Я бы придерживался мнения - просто поместить окно внутри своего окна и "держать" его там. Пользователю в принципе без разницы, окно в окне или окно на окне, главное поведение.


Сложно, но для меня будет оправдано приобретенным опытом и возможно тем, что это еще кому-то поможет  Улыбающийся

Окно на окне в принципе тоже вариант, но не хотелось бы до него доходить   Улыбающийся
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



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

Всё зависит от того что и куда будешь встраивать.
Если встраиваемое окно создано чужим сторонним приложением и имеет input focus и окно твое тоже имеет input focus, то можешь сразу похоронить эту затею ибо совместить 2 изолированных input managers не получится Грустный
Записан

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


Всё зависит от того что и куда будешь встраивать.
Если встраиваемое окно создано чужим сторонним приложением и имеет input focus и окно твое тоже имеет input focus, то можешь сразу похоронить эту затею ибо совместить 2 изолированных input managers не получится Грустный

input focus - это я как понимаю, свойство окна позволяющее принимать фокус на себя?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



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

input focus - это я как понимаю, свойство окна позволяющее принимать фокус на себя?
Я имел в виду клавиатурный фокус.
Ведь иметь 2 одновременно мигающих курсора навряд ли комуто захочется)
Записан

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

input focus - это я как понимаю, свойство окна позволяющее принимать фокус на себя?
Я имел в виду клавиатурный фокус.
Ведь иметь 2 одновременно мигающих курсора навряд ли комуто захочется)

Аа, с этим проблем нет, фокус может принадлежать только одному элементу в системе, и переходя на одно окно, оно автоматически пропадает на другом.
И тут не будет разницы окно в окне или два окна по отдельности.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



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

Аа, с этим проблем нет, фокус может принадлежать только одному элементу в системе, и переходя на одно окно, оно автоматически пропадает на другом.
И тут не будет разницы окно в окне или два окна по отдельности.
Ню-ню.
Я же не ради трёпа заострил вопрос на этом.
Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


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

В Windows на уровне в WinAPI это делается не так трудно, на С++ Builder XE проверял,
Так и делайте на том же уровне WinAPI - но на кросс-платформенность это не претендует

P.S. по поводу "никак" и "хочется - перехочется" к сожалению не понял чем напрашивался ))
      Я точно знаю что это возможно, главное желание. А ответ "никак" покажет, что человеку просто не было необходимости это делать.
Такая необходимость "себе дороже". Ясно что даже в случае успеха такое окно станет источником многих забот. С др стороны Вы разжигаете/поощряете аппетит пользователя/заказчика - ведь Вы сказали "можно" (а часто хочется и прихвастнуть типа "элементарно" Улыбающийся). Ну так если можно - тогда давайте вводить там данные, получать результаты и.т.д. - иначе что толку с "показа окна"?, И соскочить уже будет не так просто, ведь Вы уже пообещали... Поэтому немедленно упереться рогом типа "низзя!" = лучшее решение
Записан
Limetris
Гость
« Ответ #11 : Февраль 21, 2014, 14:14 »

Ню-ню.
Я же не ради трёпа заострил вопрос на этом.

Ну возможно я чего-то недопонимаю, но при захвате чужих окон, например, из Builder-а я таких проблем не замечал.
Четко был один фокус и переключался как следует.
Одновременно в двух полях ввести что-то нельзя было. Улыбающийся
Записан
Bepec
Гость
« Ответ #12 : Февраль 21, 2014, 14:16 »

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

Сообщений: 2921



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

Одновременно в двух полях ввести что-то нельзя было. Улыбающийся
Одновременно, конечно не получится.
Но проблем будет куча. Это я гарантирую.
Записан

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

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

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

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

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

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

Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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