2016-06-16 3 views
1

Мне было интересно, можно ли запустить внешнее приложение внутри виджета QT под операционной системой Windows. Например, если бы я написал приложение Qt gui, где в одном из диалогов пользователь мог написать какой-то текст, я мог бы использовать текстовое поле там или что-то подобное. Но вместо этого, можно ли запустить Notepad ++ или приложение notpad windows в этом диалоговом окне? Буду признателен за помощь.Вставить внешнее приложение в виджет под Qt

+3

"возможно", конечно. «Легко», не так много. Я думаю, что Win32 позволяет начать другой процесс и получить дескриптор окна для главного окна этого процесса (но не спрашивайте меня, как именно). При этом вы можете использовать 'QWindow :: fromId' +' QWidget :: createWindowContainer', чтобы вставить это окно. – peppe

ответ

2

Это не очень практично делать то, что вы описываете на уровне приложения, встраивая весь процесс в окно другого. (Это было бы технически сложно, и пользовательский опыт, вероятно, был бы очень плохим, если бы вы могли снять его.)

К счастью, эта проблема компонентов приложения уже решена! Таким образом, вы можете получить конечный результат, который вы описываете, с помощью немного другого механизма. Многие приложения предоставляют COM-интерфейсы для автоматизации и встраивания, а также возможность встраивания COM-объектов в приложение Qt.

(старые технологии, такие как DDE, OLE и ActiveX при условии, различные аспекты этого, но все в основном устаревшими в пользу COM AFAIK.)

Надеюсь, вы можете найти COM объект от третьей стороны, или найти приложение, которое предоставляет свои компоненты через COM и собирает ваше приложение таким образом.

Посмотрите документацию Qt:

Смежные вопросы