用代码举例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/ikQF 著作权归作者所有。请勿转载和采集!