Linux 下使用 Qt 将其他应用窗口嵌入到 Widget 中
在 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。
原文地址: https://www.cveoy.top/t/topic/p2Vu 著作权归作者所有。请勿转载和采集!