目录
一、需求
最近在研究Qt程序如何集成一些第三方的工具做功能扩充,了解到可以将其他软件的界面集成到Qt的程序中显示。
二、 实现代码
实现思路为通过QProcess启动第三方进程,并获取窗口句柄集成到Qt,废话不多说,代码如下:
QString cmd = QString("D:/Software/navicat/navicat.exe");
m_process.start(cmd, QStringList() << "");
m_process.waitForFinished(2000);
WId wid = (WId)FindWindow(NULL, L"Navicat Premium");
QWindow* destWindow = QWindow::fromWinId(wid);
if (nullptr == destWindow)
{
return;
}
destWindow->setFlags(destWindow->flags() | Qt::CustomizeWindowHint | Qt::WindowTitleHint);
QWidget* childWidget = QWidget::createWindowContainer(destWindow, this); //第二个参数是作为window的父类,也可以用layout
ui.horizontalLayout->addWidget(childWidget);
childWidget->show();
三、实现效果