如何在Qt程序的界面中嵌入其他程序的界面? (windows系統下)
1.首先獲得外部程序的句柄,使用windows的API FindWindow。
FindWindow有兩個參數,第一個是外部窗口的類名,第二個是外部窗口的標題。如果不知道以上兩個參數,可以使用spy++工具查看:

打開spy++,點擊望眼鏡圖標,彈出小窗口。 然後拖動上圖2所示的圖標到窗口上就會顯示窗口的信息。
2.使用QWindow的靜態函數fromWinId將外部窗口轉化為QWindow。fromWinId的參數是WId類型的,可以將HWND直接強轉為WId。
3.使用QWidget的靜態函數createWindowContainer()將外部窗口嵌入到Qt的程序中。createWindowContainer有三個參數,第一個參數就是第二步獲得的QWindow指針。第二個參數是窗口的父窗口,也就是 要將外部程序嵌入到哪個widget中。第三個參數是窗口標誌。
例:將QtCreator嵌入到應用程序中,首先通過spy++獲得QtCreator窗口的類名為Qt5QWindowIcon。關鍵代碼如下:

例子將QtCreator窗口嵌入到bottom中,然後將bottom和btnTest按鈕加入到佈局中。程序運行後QtCreator消失不見,直到應用程序啟動後,QtCreator的窗口嵌入到應用程序中(真是個奇怪的例子)。例子運行結果:
經過測試,被嵌入的程序顯示和鼠標事件並不理想,有待進一步研究。
閱讀更多 程序員fearlazy 的文章