Название: Открыть внешнее приложение внутри программы Отправлено: korish от Сентябрь 20, 2012, 16:36 Есть скомпилированный исполняемый файл (prog_compiled). Необходимо написать программу (myprog), которая при запуске покажет окно (Виджет) в котором будет запущена другая программа (prog_compiled).
В данный момент имеется исполняемый файл (prog_compiled) и программа (myprog_2) которая после запуска открывает виджет. Рядом в новом окне открывается (prog_compiled). Для этого я воспользовался командой m_process->start("prog_compiled") и вставил ее в конструктор виджета. Как сделать так чтобы (prog_compiled) исполнялась внутри виджета программы (myprog_2) а не в отдельном окне? Название: Re: Открыть внешнее приложение внутри программы Отправлено: GreatSnake от Сентябрь 20, 2012, 16:56 Мдя...
Ох и много же тебе ещё нужно учить, учить и учить... Ибо полностью отсутствуют базовые знания межпроцессорного и межоконного взаимодействия ??? Название: Re: Открыть внешнее приложение внутри программы Отправлено: andrew.k от Сентябрь 20, 2012, 17:11 тут опасно конечно советовать :)
Но возможно человека интересует технология XEmbed. посмотри класс QX11EmbedContainer и сопутствующие. Но prog_compiled естественно должно поддерживать встраивание. Т.е. просто произвольное не получится встроить (на сколько мне известно). Я немного экспериментировал с этим, но нарвался на определенные глюки с фокусом ввода виджетов и забросил это дело, как неприемлемое, возможно сейчас ситуация обстоит лучше. Название: Re: Открыть внешнее приложение внутри программы Отправлено: GreatSnake от Сентябрь 20, 2012, 17:15 Я немного экспериментировал с этим, но нарвался на определенные глюки с фокусом ввода виджетов и забросил это дело, как неприемлемое, возможно сейчас ситуация обстоит лучше. Вот это и есть главная проблема, которую не решить средствами Qt :(Название: Re: Открыть внешнее приложение внутри программы Отправлено: andrew.k от Сентябрь 20, 2012, 17:20 Я немного экспериментировал с этим, но нарвался на определенные глюки с фокусом ввода виджетов и забросил это дело, как неприемлемое, возможно сейчас ситуация обстоит лучше. Вот это и есть главная проблема, которую не решить средствами Qt :(В частности почему-то с многострочным текстовым редактором. Он не мог получить фокус. Название: Re: Открыть внешнее приложение внутри программы Отправлено: GreatSnake от Сентябрь 20, 2012, 17:39 Именно проблемы с фокусом я и имею в виду.
С этой проблемой я столкнулся ещё когда эмбеддил окна на Motif-е. Пришлось залезать в "кишки" motif-a + налаживать общение приложений. XEmbed появился намого позже) Почему тролли до конца не доделали его поддержку мне непонятно. Наверное потому, что в апплетах фокус не нужен, а больше никто и не просил. Кстати, под виндой всё придётся делать через winapi и как связать встроенное окно с фокус-менеджером главного окна очень большой вопрос. Название: Re: Открыть внешнее приложение внутри программы Отправлено: korish от Сентябрь 24, 2012, 11:20 тут опасно конечно советовать :) Но возможно человека интересует технология XEmbed. посмотри класс QX11EmbedContainer и сопутствующие. Но prog_compiled естественно должно поддерживать встраивание. Т.е. просто произвольное не получится встроить (на сколько мне известно). Я немного экспериментировал с этим, но нарвался на определенные глюки с фокусом ввода виджетов и забросил это дело, как неприемлемое, возможно сейчас ситуация обстоит лучше. Поробовал воспользоваться QX11EmbedContainer и вот что получилось: #include <QtGui> #include <QX11EmbedContainer> Код: int main(int argc, char *argv[]) Запускаю программу передавая в командной строке путь к исполняемому файлу который хочу встроить. Не могу понять чего не работает. qDebug() выводит путь к исполняемому файлу для запуска и winId mainWidget как я понимаю. Возможно из-за того что встраиваемый исполняемый файл не подготовлен для такого запуска? Название: Re: Открыть внешнее приложение внутри программы Отправлено: GreatSnake от Сентябрь 24, 2012, 11:26 Хм... всё нужно делать наоборот.
См. здесь (http://www.prog.org.ru/index.php?topic=14234.msg102287#msg102287) как. Название: Re: Открыть внешнее приложение внутри программы Отправлено: korish от Сентябрь 24, 2012, 16:16 На stackoverflow нашел почти то что нужно:
Код: int main(int argc, char *argv[]) Пробовал вместо xterm запускать свой исполняемый файл но так просто не получается, каким образом можно доработать данный пример? |