在 QFrame 中嵌入 IE 窗口

Posted

技术标签:

【中文标题】在 QFrame 中嵌入 IE 窗口【英文标题】:Embedding IE window inside a QFrame 【发布时间】:2014-07-01 11:41:35 【问题描述】:

我正在尝试使用QProcess 将IE 窗口嵌入到QFrame 中以调用IE 应用程序。我正在使用 Qt 5.2.1 开发 Win7 32bit。

我尝试了以下方法

尝试将进程的父进程设置为框架,而不是通过这个设置MainWindow

QProcess *process = new QProcess(ui->frame_Video);

通过这个

QProcess *process = new QProcess(ui->frame_Video); 
process->setParent(ui->frame_Video);

然后我尝试使用QWidget::createWindowContainer() 方法。这是我尝试遵循的工作流程:

获取IE窗口的WId(通过IE窗口的hWnd或其他方法) 使用QWindow::fromWinID() 创建一个QwindowQWindow 传递给QWidget::createWindowContainer()

我的问题:

    是否可以将 IE 窗口嵌入到 Qt 应用程序中? 关于我的第一个方法,我怎样才能使 QFrame 对象成为 QProcess 的父对象 第三种方法有效吗? (我仍然需要找到如何将 hWnd 转换为 WId)

【问题讨论】:

我不认为QProcess 实现了任何嵌入。它从您的 Qt 应用程序运行一个单独的进程(应用程序)。你可以试试看QAxWidget 应用程序(如 IE)能否作为 ActiveX 控件对象运行? @user3079474 是的,这就是你想要做的,你应该为此使用 activeqt 模块。 【参考方案1】:

我的问题的答案

是的,可以将 IE 窗口嵌入到 Qt 应用程序中,(正如 @vahancho 所指出的)您将不得不使用 QAxWidgets。有关详细信息,请参阅示例/Activeqt 中的 Web 浏览器示例

【讨论】:

以上是关于在 QFrame 中嵌入 IE 窗口的主要内容,如果未能解决你的问题,请参考以下文章

Qt中,当QWidget不是作为顶级窗体出现时,怎么让他显示关闭按钮呢

Qt-窗口部件概念介绍

怎么在JSP中嵌入SWING开发的应用程序JFRAME窗口

Java(或者VB等)桌面程序怎么嵌入浏览器阿?

C#程序嵌入Word窗口

使用 iframe 时,嵌入式 base64 pdf 不会在 IE 中显示