前言
近期项目中,要将子进程界面嵌入到主进程中,双方都是自己开发的,之前有过研究,曾经写过一篇文章
将外部exe嵌入到界面中(Windows)——Qt_startf_useshowwindow-CSDN博客,如今发现不好用,界面是嵌入了,但是并没有按照要求的大小展示,通过了几种方法(布局、绝对位置)仍然行不通。
如何将一个进程(子进程)界面嵌入另一个进程界面
- 方式一:在主进程中启动子进程,获取子进程的窗口句柄。
- 方式二:如果子进程也是自己开发的,在启动子进程时,可以将主进程的容纳子进程界面的窗体句柄作为运行参数传入子进程,通过进程通讯的方式,进行控制。
QStringList argl = a.arguments();
qDebug() << argl;
if (argl.size() <2)
{
return 0;
}
WId wid = WId(argl.at(1).toInt());
QWindow* window = QWindow::fromWinId(wid);
SubProcessWidget w;
w.setProperty("_q_embedded_native_parent_handle", QVariant(wid));//设置属性,这句是必须的
w.winId();//必须