在 Linux 系统下,可以使用 XEmbed 协议将其他应用程序的窗口嵌入到一个 Qt 开发的可执行程序的 Widget 中。以下是一个示例代码:

#include <QApplication>
#include <QWidget>
#include <QX11EmbedContainer>
#include <X11/Xlib.h>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 创建一个 QWidget 作为主窗口
    QWidget mainWidget;

    // 创建一个 QX11EmbedContainer 作为嵌入窗口的容器
    QX11EmbedContainer container(&mainWidget);

    // 获取要嵌入的窗口的 ID(这里以 gedit 为例)
    Display *display = XOpenDisplay(NULL);
    Window embedWindow = XInternAtom(display, "_NET_WM_WINDOW_TYPE_NORMAL", True);

    // 将嵌入窗口的 ID 设置到容器中
    container.embedClient(embedWindow);

    // 设置容器的大小和位置
    container.setGeometry(0, 0, 800, 600);

    // 显示主窗口和容器
    mainWidget.show();
    container.show();

    return a.exec();
}

在上面的示例中,我们创建了一个 QWidget 作为主窗口,然后创建了一个 QX11EmbedContainer 作为嵌入窗口的容器。通过调用container.embedClient(embedWindow)将要嵌入的窗口的 ID 设置到容器中,这里以 gedit 的窗口为例。最后,通过设置容器的大小和位置,并显示主窗口和容器来完成嵌入操作。

注意:在编译和运行代码之前,请确保已经安装了相应的依赖库和开发工具,并将代码中的embedWindow替换为你想要嵌入的窗口的 ID。

Linux 下使用 Qt 将其他应用窗口嵌入到 Widget 中

原文地址: https://www.cveoy.top/t/topic/p2Vu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录