Linux嵌入外部程序窗口,QT 5.5将外部应用程序嵌入QWidget

我对将外部应用程序嵌入基于QT 5.5 Widget的应用程序感兴趣。我只关心它在Linux上的工作。我在GNOME上使用CentOS 7。

这是我尝试过的代码:

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,并仅对值进行硬编码以进行测试。要嵌入的应用程序正在运行。

当我执行我的应用程序时,它运行没有错误。并且要嵌入的应用程序会更改屏幕位置并调整其大小,但是不会嵌入到我的应用程序中。它仍然是一个单独的窗口。如果我杀死了我的应用程序,嵌入式应用程序也会被杀死。

那么有没有一种方法可以将应用程序实际嵌入到我的应用程序中呢?

**更新***

我刚刚发现了一些有趣的东西。当我运行我的应用程序(容器应用程序)时,第二个应用程序(我要嵌入的应用程序)在我的应用程序之外仍然是一个独立的Window。但是,如果我调整应用程序窗口的大小(单击右下角以调整窗口的大小),第二个要嵌入的应用程序也将调整大小,但是在我的容器应用程序之外仍然是一个独立的Window。

更加有趣的是,如果我杀死了我的应用程序,则两个应用程序都将从桌面“消失”。但是,系统监视器显示第二个应用程序(我要嵌入的应用程序)仍在运行(但是没有GUI)。现在,如果我再次启动我的应用程序,第二个应用程序实际上就是我想要的方式嵌入到我的容器应用程序中!

因此,我想我必须弄清楚为什么杀死我的应用程序然后重新启动它会正确地嵌入第二个应用程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值