QtWebEngine在DOM中渲染原生Qt小部件?

时间:2015-02-22 18:03:53

标签: qt qtwebengine

我希望用HTML重写一个Qt应用程序,并让QtWebEngine为我渲染它。我完全理解HTML页面将在QtWebEngine中显示和运行。

然而,我真正感兴趣的一件事是,我无法找到文档 - 如果我正在寻找错误的地方而道歉 - 就是要知道QtWebEngine是否允许DOM的元素被“交换”为本机Qt小部件。例如,<div id="myWidget">实际上可能是QOpenGLWidget吗?这完全是荒谬的吗?

例如,我希望能够做到:

<body>
<h1>Example</h1>
<div id="myWidget">
</div>
<p>Some text</p>
</body>

并神奇地让我的QOpenGLWidget在DOM中代替“myWidget”呈现。我的HTML只能由QtWebEngine呈现,不一定是由其他浏览器呈现,所以如果有一个解决方案意味着它在Chrome / Firefox / IE中不起作用,那对我来说绝对没问题。

...或者我是否必须使用在QtWebEngine实例中运行的javascript来找出“myWidget”的位置并自己在该位置绘制QOpenGLWidget像素数据?我真的不想沿着这条路走下去,因为它不允许像“myWidget”顶部的HTML对话框那样。

我真的很感激这里的任何信息。一个例子(如果这是可能的)将是太棒了。非常感谢提前。

1 个答案:

答案 0 :(得分:2)

QtWebKit的解决方案:

您需要继承QWebPluginFactory并在其create方法中创建窗口小部件。 然后,您可以使用<object>标记

将您的小部件嵌入到HTML中
<object type="application/x-qt-plugin" name="myWdget" classid="QOpenGLWidget">
</object>

See example here

And another example here

...对于新的QtWebEngine似乎无效。