2014-11-21 3 views
0

Это следующее решение для outstanding question, решение которого, как мне кажется, должно сделать мое приложение Qt дочерним по отношению к другому приложению, в частности активное окно с фокусом ввода. Мне нужно сделать это, чтобы мое приложение Qt автоматически включало фокус ввода, без необходимости сначала щелкнуть по нему. (Это необходимо, потому что приложение Qt запускается фоновым процессом.)Воспроизведение приложения Qt другому приложению

Я знаю QWinWidget - «виджет Qt, который может быть дочерним элементом собственного виджета Win32». К сожалению, мое приложение основано на QMainWindow, и нет очевидного способа сделать его результатом QWinWidget.

+0

@AlexanderVX спасибо за ваш ответ, но я не очень понимаю ваше объяснение. Повторите попытку? – Olumide

ответ

0

Решение, которое, кажется, что я должен сделать мое приложение Qt ребенком другого приложения, в частности, активное окно, которое имеет фокус ввода ...

Подобных решений Win32, где другие приложения процесса захватывает какое-то окно внутри собственного холста, обычно управляется вызовом API SetParent. Вот one. Он работает для меня с другим визуализацией процесса внутри виджета Qt, но вам нужно сделать это наоборот. Как вы получаете этот дескриптор окна Qt? Ну, для меня QWidget :: winId() работает даже в Qt 5.3, но я в последнее время наткнулся на discussion и немного смущен, всегда ли он работает или нет. Во всяком случае, вам нужно добавить get an active window в приложение Qt, прежде чем вы получите его winId(), который должен быть дескриптором окна.

P.S. Олумид, пожалуйста, отмените мой первоначальный комментарий. Я подумал, наоборот, какое приложение родит, какое окно, и получается, что не-Qt берет Qt.

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