[Lazarus] Embed other application window with qt5

Luca Olivetti luca at wetron.es
Sun Jun 7 11:51:36 CEST 2020


Hello,

I'd like to embed another application window[*] in my application.
I found this code

https://stackoverflow.com/questions/7611103/embedding-window-into-another-process#7612436

and it works. Since my application should run under windows that should 
be enough, but I prefer to do my testing under Linux, so I'd like a 
solution for the qt5 widgetset.

I tried this code

procedure TForm1.Button1Click(Sender: TObject);
var kk:QWindowH;
   cc: QWidgetH;
begin
   kk:=QWindow_fromWinID(StrToInt64(Edit1.text));
   QWindow_setFlags(kk,QtFramelessWindowHint);
   cc:=QWidget_createWindowContainer(kk);
   QWidget_setParent(cc,TQtWidget(Self.Handle).Widget);
end;


and, while the other application window disappears, I don't see it in my 
form (it's still running though).

I tried to find some clues in the mplayer control but it doesn't work 
with qt (I tried to adapt it with no success), besides it just instructs 
mplayer to embed itself in a control.


[*] actually I need to embed a browser, but none of the alternatives in 
https://wiki.freepascal.org/Webbrowser work:

- turbopower is too limited
- I didn't try qtWebkit but it seems qt only
- geckoport has been discontinued
- fpCEF3 is old and couldn't make it work[**]
- CEF4Delphi is windows only at the moment

but playing with userChrome.css I could embed firefox as an external 
application.

Bye
-- 
Luca Olivetti
Wetron Automation Technology http://www.wetron.es/
Tel. +34 93 5883004 (Ext.3010)  Fax +34 93 5883007


More information about the lazarus mailing list