1

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

但是,我真正感兴趣并且无法找到有关文档的一件事是 - 如果我在错误的地方寻找,请道歉 - 是知道 QtWebEngine 是否允许将 DOM 的元素“交换”为本机 Qt 小部件。例如,a<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 对话框之类的东西。

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

4

1 回答 1

2

解决方案QtWebKit

您将需要QWebPluginFactory在其 create 方法中子类化并创建您的小部件。然后你可以将你的小部件嵌入到带有<object>标签的 HTML 中:

<object type="application/x-qt-plugin" name="myWdget" classid="QOpenGLWidget">
</object>

在此处查看示例

这里还有另一个例子

...似乎不再适用于 new QtWebEngine

于 2015-02-22T18:26:33.980 回答