适合主进程界面与子进程界面都是QT界面的情况,其他进程的情况请参考其他文章,需要区分平台。
关键点
使用如下两个函数,QWInow类是Qt5.0之后提供的,Qt4版本是否有代替的未去深究,主要这个功能需求比较少,很少涉及。
QWindow * fromWinId(WId id);
QWidget *QWidget::createWindowContainer(QWindow *window, QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())
下面示例三个程序都在一个目录下,每个app在相应的子目录下面
示例:
子窗口1为MyWidget1,为应用程序
功能:显示界面,并将窗口1的wid写入QSetting配置文件(或者其它主进程能获取子进程id的方式都行)
子窗口2为MyWidget2,为应用程序
功能:显示界面,并将窗口2的wid写入QSetting配置文件
主窗口进程启动两个子进程并从 QSetting文件获取两个子窗口的wId;
然后使用下面两个函数将两个窗口添加到主界面上就行了。
QWindow *childWin1 = QWindow::fromWinId(wid1); //根据子窗口id获取QWindow指针
QWindow *childWin2 = QWindow::fromWinId(wid2);
if(childWin1 && childWin2)
{
QVBoxLayout *ver = new QVBoxLayout;
childWin1->setFlags(chil