将Qt应用程序嵌入到外部窗口

问题描述 投票:0回答:1

我有 Qt 应用程序,我想在 Linux / X 环境中渲染到外部应用程序提供的窗口上。

我知道可以启动一些应用程序并告诉它们将自己投射到我的一个小部件上:我在内部

QWidget::winId()
并以此作为参数启动外部应用程序。我想做相反的事情:使用从其他地方提供的 xid 启动我的 Qt 应用程序。我找不到如何做这个方向。

qt x11
1个回答
0
投票

终于找到了(评论中的解释):

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.