Название: createWindowContainer и встраивание в окно Отправлено: traktort от Март 02, 2016, 12:23 Добрый день!
Подскажите, пожалуйста, пользовался ли кто-нибудь createWindowContainer? Создаю виджет wi, получаю его WId, а из него получаю QWindow *myWindow. В лайаут окна приложения вставляю QWidget. Код: wi->show(); В итоге работает через раз (почему?), да еще и не так, как надо. То есть окно первого виджета остается существовать, но его содержимое (кнопочка у меня) отсутствует - она появляется в окне приложения. Как избавиться от оставшегося пустого окошка непонятно. Запуталась я) И самое главное - могу ли я встроить не свой виджет в окно, а стороннее приложение, например, калькулятор стандартный? Всем ответившим заранее спасибо! :-* Название: Re: createWindowContainer и встраивание в окно Отправлено: Igors от Март 02, 2016, 13:05 createWindowContainer необходим для встраивания QOpenGLWindow, о каких-то других разумных применениях мне ничего не известно. Он капризничает с обработкой событий, это решаемо, но создавать его "просто так" не видно смысла
И самое главное - могу ли я встроить не свой виджет в окно, а стороннее приложение, например, калькулятор стандартный? Нет (во всяком случае средствами Qt)Название: Re: createWindowContainer и встраивание в окно Отправлено: traktort от Март 02, 2016, 13:30 Нет (во всяком случае средствами Qt) То есть выхода нет никакого? =( Не могу найти ничего полезного по этой теме, а ведь такая интересная опция. Вот тут баг, но, видимо, делается то же, что хочу я. https://bugreports.qt.io/browse/QTBUG-44404 (https://bugreports.qt.io/browse/QTBUG-44404) Название: Re: createWindowContainer и встраивание в окно Отправлено: Igors от Март 02, 2016, 13:42 Вот тут баг, но, видимо, делается то же, что хочу я. Ну а почему Вы так решили? Другое приложение имеет другое адресное пр-во, общаться с ним из своего - дело непростое (и немаленькое), нужна солидная, возможно платформо-зависимая, технология. А решить это "просто созданием какого-то окна" точно не удастся :) И, в конце-концов, много ли счастья от "встроенного калькулятора"? :)https://bugreports.qt.io/browse/QTBUG-44404 (https://bugreports.qt.io/browse/QTBUG-44404) Название: Re: createWindowContainer и встраивание в окно Отправлено: traktort от Март 02, 2016, 14:39 нужна солидная, возможно платформо-зависимая, технология Я представляла это несколько иначе. Окно стороннего приложения "обрезается" сверху, что бы не было красного крестика и т.д. И положение его = положению виджета-контейнера. И размер. И оно поверх окна. Знать бы, как запустить "калькулятор" поверх всех окон, сделать его нужного размера и в нужном месте расположить... много ли счастья от "встроенного калькулятора"? :) У меня было бы много =) Название: Re: createWindowContainer и встраивание в окно Отправлено: Racheengel от Март 02, 2016, 15:08 Ну, если этот калькулятор существует в виде СОМ-компоненты или чего-то подобного, то, тогда, как-то можно.
Иначе никак. Название: Re: createWindowContainer и встраивание в окно Отправлено: Igors от Март 02, 2016, 15:20 Знать бы, как запустить "калькулятор" поверх всех окон, сделать его нужного размера и в нужном месте расположить... Ну это как раз решаемо - окно калькулятора доступно через WinAPI. Но если Вы выбрали эту задачу в целях обучение, то это неудачный выбор, тут мало чему можно научиться, все сведется к зубрежке API Название: Re: createWindowContainer и встраивание в окно Отправлено: traktort от Март 02, 2016, 15:27 Ну это как раз решаемо - окно калькулятора доступно через WinAPI. У меня linux. В нем есть какой-то доступ к окну?)) Название: Re: createWindowContainer и встраивание в окно Отправлено: Igors от Март 02, 2016, 15:41 У меня linux. В нем есть какой-то доступ к окну?)) Ваше упорство заслуживает лучшего применения :)Название: Re: createWindowContainer и встраивание в окно Отправлено: Racheengel от Март 02, 2016, 16:20 А можно узнать, для чего подобное понадобилось?
Возможно есть другие, более простые пути решения. Название: Re: createWindowContainer и встраивание в окно Отправлено: traktort от Март 03, 2016, 08:35 А можно узнать, для чего подобное понадобилось? Возможно есть другие, более простые пути решения. Допустим, есть расчетная программа. И есть десяток калькуляторов (разных, например химический и т.д.) Все десять калькуляторов есть в виде исполняемых файлов. Очень удобно было бы поставить на форму расчетной программы tab-widget, в каждую вкладку впихнуть калькулятор и по необходимости открывать то один, то другой =) А не 100500 окон открыть и запутаться, какой что считает. Пока ничего не удалось придумать (( Название: Re: createWindowContainer и встраивание в окно Отправлено: Racheengel от Март 03, 2016, 11:40 Ну тогда все равно получится "каша из интерфейсов", ведь каждый калькулятор, скорее всего, имеет свой неповторимый гуй и о наличии других ничего не знает. Т.е. обмен рассчетами только через буфер обмена, никаких общих данных и т.д. Было бы хорошо сдружить их на уровне единого приложения, если бы были исходники :) Но, я так понимаю, это не Ваш случай?
Название: Re: createWindowContainer и встраивание в окно Отправлено: qate от Март 03, 2016, 13:50 идея интересная
пример из багрепорта "работает", но не могу получить window id чужого окна Название: Re: createWindowContainer и встраивание в окно Отправлено: traktort от Март 04, 2016, 23:49 Было бы хорошо сдружить их на уровне единого приложения, если бы были исходники :) Но, я так понимаю, это не Ваш случай? Да, именно так. Название: Re: createWindowContainer и встраивание в окно Отправлено: traktort от Март 04, 2016, 23:51 идея интересная пример из багрепорта "работает", но не могу получить window id чужого окна Не то слово) "Работает" - это как? У меня ненормально работает, в ст написала. Какой у вас Qt? Название: Re: createWindowContainer и встраивание в окно Отправлено: Old от Март 05, 2016, 07:53 И самое главное - могу ли я встроить не свой виджет в окно, а стороннее приложение, например, калькулятор стандартный? Это зависит от того, какое рабочее окружение вы используете.Если KDE, то там есть KParts. У Gnome - Bonobo. Название: Re: createWindowContainer и встраивание в окно Отправлено: traktort от Март 05, 2016, 14:49 Это зависит от того, какое рабочее окружение вы используете. Если KDE, то там есть KParts. У Gnome - Bonobo. Видимо, в моем случае это возможно. Но встраивается окно один раз из десяти попыток)) Да и остается окно от встраиваемого калькулятора, оно пустое, но, если я меняю его размер или сворачиваю или закрываю, то встроенный виджет все за ним повторяет Оо... Название: Re: createWindowContainer и встраивание в окно Отправлено: traktort от Март 05, 2016, 15:02 Но встраивается окно один раз из десяти попыток)) А, нет. Пригляделась. Калькулятор появляется в нужном месте, но сразу же потом исчез и появился отельным окном. Что за фигня... Название: Re: createWindowContainer и встраивание в окно Отправлено: Old от Март 05, 2016, 16:26 Видимо, в моем случае это возможно. Это возможно если вы используете одну из технологий, которая это обеспечивает. И встраиваемая программа должна использовать эту же технологию. Само встроиться и работать ничего не будет. :)Название: Re: createWindowContainer и встраивание в окно Отправлено: Racheengel от Март 05, 2016, 17:03 В любом случае решение будет платформозависимым.
Например типа этого: http://stackoverflow.com/questions/5767992/want-to-resize-other-applications-running-in-windows Название: Re: createWindowContainer и встраивание в окно Отправлено: traktort от Март 06, 2016, 18:32 Видимо, в моем случае это возможно. Это возможно если вы используете одну из технологий, которая это обеспечивает. И встраиваемая программа должна использовать эту же технологию. Само встроиться и работать ничего не будет. :)Я вот не знаю какую технологию использует createWindowContainer. А уж тем более какие-то программы. Можно какую-нибудь ссылку (понятную желательно, в идеале на русском), как написать встраиваемую и встраивающую программы? )) Речь об этом: http://wiki.linuxformat.ru/wiki/LXF85:Qt/KDE (http://wiki.linuxformat.ru/wiki/LXF85:Qt/KDE) ? Итого. Сделала я встраивание любого окна по его windowTitle. Запускаю калькулятор свой, нахожу его WId, делаю контейнер. Окно калькулятора остается отдельным окном(( На форме что-то дергается, но не появляется калькулятора. Иногда (я даже не пойму при каких таких стечения обстоятельств) появляется виджет калькулятора. И этот калькулятор даже работает! Но отдельно продолжает висеть пустое окно, ошметок калькулятора((( И самое внезапное. На win это же самое срабатывает! Правда все равно выглядит это не очень то... Название: Re: createWindowContainer и встраивание в окно Отправлено: traktort от Март 06, 2016, 18:33 В любом случае решение будет платформозависимым. Например типа этого: http://stackoverflow.com/questions/5767992/want-to-resize-other-applications-running-in-windows Разница только в "нахождении" окна по его имени. Если бы это была единственная проблема!(( Очень жаль, но похоже это нереально. Название: Re: createWindowContainer и встраивание в окно Отправлено: Old от Март 06, 2016, 18:56 Можно какую-нибудь ссылку (понятную желательно, в идеале на русском), как написать встраиваемую и встраивающую программы? )) Да, речь об этом. KParts штатная технология KDE для этого.Речь об этом: http://wiki.linuxformat.ru/wiki/LXF85:Qt/KDE (http://wiki.linuxformat.ru/wiki/LXF85:Qt/KDE) ? По ссылке есть пример, а дальше смотрите исходники KDE. Название: Re: createWindowContainer и встраивание в окно Отправлено: qate от Март 09, 2016, 08:16 "Работает" - это как? У меня ненормально работает, в ст написала. Какой у вас Qt? ну как описано в багрепорте - окно дочернего приложения запускается "внутри" родителя но я не могу понять как получить id не моего окна, например kcalc - то что выдает xprop почемуто не подходит версия qt 551, opensuse 13.1 64 bit |