我有 Qt 应用程序,我想在 Linux / X 环境中渲染到外部应用程序提供的窗口上。
我知道可以启动一些应用程序并告诉它们将自己投射到我的一个小部件上:我在内部
QWidget::winId()
并以此作为参数启动外部应用程序。我想做相反的事情:使用从其他地方提供的 xid 启动我的 Qt 应用程序。我找不到如何做这个方向。
终于找到了(评论中的解释):
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// create QWindow
int hwnd = 35651603; // provided from other app, should be dynamic
QWindow *nativeWindow = QWindow::fromWinId(hwnd);
// Show something as usual
MainWindow w;
w.show();
// move displayed widget to desired location
w.windowHandle()->setParent(nativeWindow);
return a.exec();
}