我有兴趣在我的QT 5.5 Widget应用程序中嵌入外部应用程序。我只关心它在Linux上的工作。我在GNOME上使用CentOS 7。QT 5.5将外部应用程序嵌入QWidget
这是我曾尝试代码:
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QWindow *window = QWindow::fromWinId(125829124);
QWidget *widget = QWidget::createWindowContainer(window);
widget->setParent(this);
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(widget);
this->setLayout(layout);
}
在这个例子中,我分别,只是硬编码的测试值获得WinId。要嵌入的应用程序正在运行。
当我执行我的应用程序时,它运行没有错误。嵌入的应用程序改变屏幕位置并调整大小,但它不嵌入我的应用程序中。它仍然是一个单独的窗口。如果我杀了我的应用程序,嵌入式应用程序也会被终止。
那么是否有一种方法可以将应用程序嵌入到我的应用程序中?
*************** UPDATE ****************
一些有趣的我只是发现。当我运行我的应用程序(容器应用程序)时,第二个应用程序(我想嵌入的应用程序)仍然是我的应用程序之外的独立窗口。但是,如果我调整我的应用程序窗口大小(单击右下角调整窗口大小),第二个应用程序(即将嵌入)也会调整大小,但仍然是我的容器应用程序外部的独立窗口。
更有趣的是,如果我杀了我的应用程序,这两个应用程序都会从桌面“消失”。但是系统监视器显示第二个应用程序(我想嵌入的应用程序)仍在运行(但是没有GUI)。现在,如果我再次启动我的应用程序,第二个应用程序实际上已嵌入到我的容器应用程序中,就像我想要的那样!
所以我想我必须弄清楚为什么杀死我的应用程序,然后重新启动它嵌入第二个应用程序正确。
“但它不嵌入我的应用程序中的”你可以提供一个屏幕截图? – jpo38