Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: IUnknown от Июня 22, 2005, 15:04



Название: Другое приложение как окошко в MDI программе
Отправлено: IUnknown от Июня 22, 2005, 15:04
У меня есть MDI приложение и мне нужно что-бы другое приложение было запущено прямо в нем (как одно из окон документов). Кто подскажет как это организовать?


Название: Другое приложение как окошко в MDI программе
Отправлено: Sergeich от Июня 22, 2005, 16:20
Если это винда, попробуй использовать QWinHost из Qt/MFC Migration Framework ( часть Qt Solutions ), дока здесь http://doc.trolltech.com/solutions/qtwinmigrate/qwinhost.html, скачать можешь здесь http://hardclub.donntu.edu.ua/projects/qt/components/qtsol.htm


Название: Другое приложение как окошко в MDI программе
Отправлено: IUnknown от Июня 22, 2005, 17:17
Это не винда. Мы используем FreeBSD.


Название: Другое приложение как окошко в MDI программе
Отправлено: Sergeich от Июня 22, 2005, 17:29
Тады юзай XEmbed из Qt Solutions


Название: Другое приложение как окошко в MDI программе
Отправлено: Sergeich от Июня 22, 2005, 19:14
Это можно сделать через QtXEmbedContainer, установи себе XEmbed, там в каталоге examples/swallow есть примерчик как это сделать. Тока есть одна проблема - надо знать WId окна. В принципе если все приложения, запускаемые в данной системе написаны вами, она решается - каждый раз при создании окна надо будет передавать WId MDI-приложению ( WId можно получить через QWidget::winId() ).


Название: Другое приложение как окошко в MDI программе
Отправлено: IUnknown от Июня 22, 2005, 20:02
Тоесть мне нужно будет в приложениях писать дополнительный код для того что бы передать информацию приложению которое его запускает?! А без этого никак нельзя?


Название: Другое приложение как окошко в MDI программе
Отправлено: IUnknown от Июня 22, 2005, 21:32
Так как мне получать Wid запускаемого приложения? Есть команда типа exec() которая бы возращала бы еще и Wid запущеного приложения. А как его получает xwininfo?


Название: Другое приложение как окошко в MDI программе
Отправлено: Sergeich от Июня 23, 2005, 15:18
Цитата: "IUnknown"
Тоесть мне нужно будет в приложениях писать дополнительный код для того что бы передать информацию приложению которое его запускает?! А без этого никак нельзя?

В принципе можно, но нежательно. Ты можешь модифицировать исходный код Qt и добавить передачу Wid в конструктор QWidget'а, но как сам понимаешь решение довольно кривое.
Цитата: "IUnknown"
Так как мне получать Wid запускаемого приложения? Есть команда типа exec() которая бы возращала бы еще и Wid запущеного приложения. А как его получает xwininfo?

Во-первых, WId относится к окну, а не к процессу, процесс может иметь несколько окон, и у каждого будут свой уникальный WId. Во-вторых о такой команде типа ехес() я ничего не слышал, и сильно сомневаюсь в ее существовании. В третьих, в XLib должна быть какая-то ф-ция, к-ая возвращает окно, закрывающее данную точку экрана, ей и пользуется xwininfo.


Название: Другое приложение как окошко в MDI программе
Отправлено: IUnknown от Июня 25, 2005, 01:03
$FreeBSD: src/include/unistd.h,v 1.73 2004/02/23 04:51:07 ache Exp $
...
int    execl(const char *, const char *, ...);
int    execle(const char *, const char *, ...);
int    execlp(const char *, const char *, ...);
int    execv(const char *, char * const *);
int    execve(const char *, char * const *, char * const *);
int    execvp(const char *, char * const *);
...

Значит мне это не подходит. А где можно достать информацию по написанию оконных менеджеров?


Название: Другое приложение как окошко в MDI программе
Отправлено: Hellenna от Июня 27, 2005, 11:02
попробуй здесь почитать, может поможет
http://www.linux.org.ru/view-message.jsp?msgid=274847