当前位置: 首页 > 面试题库 >

QT 5.5将外部应用程序嵌入QWidget

陶温书
2023-03-14
问题内容

我对将外部应用程序嵌入基于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)。现在,如果我再次启动我的应用程序,第二个应用程序实际上就是我想要的方式嵌入到我的容器应用程序中!

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


问题答案:

以下达到了预期的结果,关键是添加了FramelessWindowHint:

QWindow *window = QWindow::fromWinId(211812356);
window->setFlags(Qt::FramelessWindowHint);

QWidget *widget = QWidget::createWindowContainer(window);

QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(widget);
this->setLayout(layout);


 类似资料:
  • 我希望将一个图像从我的桌面拖放到我的JPanel/Jframe上,然后能够将该图像存储到一个BufferedImage对象中,并对其执行id喜欢的操作 有没有办法用MouseListener做到这一点? 这是一个虚构的完美世界的例子,我可以在其中做到这一点 我希望你能明白。不是在寻找超复杂的东西。我是个笨蛋,尽量简单谢谢:)

  • 问题内容: 我确信你们中有人注意到,如果您有Acrobat Reader(或其他PDF阅读器),并在Firefox中打开一个PDF,您会看到它嵌入在您的标签中。有什么方法可以将应用程序嵌入JFrame中? 问题答案: 这是一个相当棘手的问题。通常,诸如Adobe Reader之类的本机应用程序不提供可以嵌入到swing应用程序中的组件。但是在Windows中,有COM / OLE方法可以将应用程序

  • java-jar basedata-dashboard-1.0.0-snapshot.jar-denv.properties.location='/home/desktop‘ 在我的桌面上,是一个名为application.properties的文件,其中包含配置详细信息。但是,当运行上面的命令时,我得到: 现在,当我在工作目录中有application.properties的本地副本时,我的应用

  • 问题内容: 我正在为公司工作一些Flex峰值。我们基本上正在评估不同的场景等。对于将Flex组件嵌入Java应用程序,您将建议使用哪种解决方案?Flex <-> Java通信不是(但…)问题,只需将swf嵌入JFrame中即可。 问题答案: 我已经用EasyJCom完成了。只要您使用标准的Java窗口库之一(Swing,awt),它就非常简单。您可以在此处查看示例(来自EZJCom网站):http

  • 我们是否可以将Azure Applications Insight dashboard嵌入到我们的一个第三方站点中,以允许我们的客户查看它提供的信息? 我还知道,使用API手动构建这些仪表板是可能的,但是,简单地获取Azure门户中创建的度量图的嵌入式代码会更好。 有人能做到吗?

  • 问题内容: 我想将Google地图嵌入到JPanel中。由于我想要放大/缩小等功能,因此使用静态图像是不可行的。 为此,我可能需要在Java桌面应用程序中嵌入一个网页(显示google地图)。而且我已经读到我需要WebKit之类的东西(替代品?)来完成此任务。 我将不胜感激能帮助我的任何帮助: 在Jpanel中嵌入网页。 该网页显示谷歌地图。 问题答案: 是的,现在可以在桌面应用程序中使用Goog