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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Программа в программе?  (Прочитано 9565 раз)
JIesnik
Гость
« : Август 20, 2010, 17:52 »

В некоторых программах (не на Qt), видел, что одно приложение запускается внутри другого. Т.е. создаётся виджет и внутрь него загружается сторонняя программа (например, Опера). Мне требуется изобразить нечто подобное, но на Qt. Гуглил, ничего не нашёл. Есть ли варианты?
P.S.: если вопрос глупый или не туда - сильно не пинайте.
Записан
crossly
Гость
« Ответ #1 : Август 20, 2010, 18:01 »

не уверен.... но возможно вам в сторону OLE...
Записан
SASA
Гость
« Ответ #2 : Август 20, 2010, 18:12 »

Цитировать
В некоторых программах (не на Qt), видел, что одно приложение запускается внутри другого.
Я тоже видел такое приложение, WMVare назывется Смеющийся
Записан
JIesnik
Гость
« Ответ #3 : Август 20, 2010, 18:15 »

Да, нет. Раньше мы писали клиент для нашего сайта на NeoBook (убогий редактор, компилирует под дельфи), так вот туда удавалось вклеить оперу. Так же видел подобные игры. Например, движок S.T.A.L.K.E.R. Online позволяет запускать другие приложения внутри игры, вот так-то. К тому же, Flash ведь тоже как-то встраивается в движок
« Последнее редактирование: Август 20, 2010, 18:16 от JIesnik » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Август 20, 2010, 18:46 »

ActiveQt
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
JIesnik
Гость
« Ответ #5 : Август 20, 2010, 18:47 »

Спасибо, я вроде начал разбираться, но если ActiveQt - значит ActiveX, а значит - только Windows. Так?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Август 20, 2010, 18:57 »

Угу. Для Линуха нужно что-то другое искать.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
JIesnik
Гость
« Ответ #7 : Август 20, 2010, 19:08 »

ActiveQt
А вы мне не поможете? Никак не могу разобраться. Хотя бы прмиерчик запуска любой внешней программы (кроме ворда и экселя)
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #8 : Август 20, 2010, 19:17 »

Я тоже видел такое приложение, WMVare назывется Смеющийся
Parallels вроде Qt юзают))
Записан
JIesnik
Гость
« Ответ #9 : Август 20, 2010, 21:43 »

Почитав я понял, что ActivX - не вариант, в Необуке что-то другое
Записан
crossly
Гость
« Ответ #10 : Август 20, 2010, 23:38 »

для Х11 http://doc.trolltech.com/4.7-snapshot/qx11embedcontainer.html думаю вариант....
Записан
JIesnik
Гость
« Ответ #11 : Август 21, 2010, 11:29 »

2crossly, не знаю, что-то не появляется =(
Вот код:
Код
C++ (Qt)
   void openbrowser()
   {
       QMdiArea* mdiarea = createmdiarea();
       QMainWindow* browserwgt = new QMainWindow(this);
 
       QX11EmbedContainer browsercont;
       browsercont.show();
       browsercont.setParent(browserwgt);
       QProcess *browserpr = new QProcess(&browsercont);
 
       browserpr->start("./gedit"); // esli budet rabotat, to gedit zamenu brauzerom Arora
 
       setCentralWidget(mdiarea);
       mdiarea->addSubWindow(browserwgt);
 
   }

когда нажимаю кнопку, которой должен запустить gedit, отладчик вываливает ошибку:
Код
Bash
QProcess: Destroyed while process is still running.
и открывается пустое MDI-окошко. Как быть?
Записан
BRE
Гость
« Ответ #12 : Август 21, 2010, 11:34 »

Вот объясни, почему большинство объектов ты создаешь в хипе (используя new), а объект класса QX11EmbedContainer - на стеке?
Как ты думаешь, какая разница в этих методах создания объектов?
Записан
JIesnik
Гость
« Ответ #13 : Август 21, 2010, 12:01 »

Не знаю, честно. Я не учил язык.  Обеспокоенный
Записан
JIesnik
Гость
« Ответ #14 : Август 21, 2010, 12:11 »

QX11EmbedContainer сделал в хипе, получилось так:
Код
C++ (Qt)
   void openbrowser()
   {
       QMdiArea* mdiarea = createmdiarea();
       QMainWindow* browserwgt = new QMainWindow(this);
 
       QX11EmbedContainer *browsercont = new QX11EmbedContainer(browserwgt);
       browsercont->show();
 
       QProcess *browserpr = new QProcess;
       browserpr->setParent(browsercont);
 
 
       browserpr->start("./gedit");
       browserwgt->setCentralWidget(browsercont);
       setCentralWidget(mdiarea);
       mdiarea->addSubWindow(browserwgt);
 
   }

теперь gedit запускается рядом, или я, тупой, опять что-то не так сделал?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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