[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