QtWebEngine отображает собственные виджеты Qt в DOM?

Я хочу переписать приложение Qt в HTML и использовать 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, меня это абсолютно устроит.

... Или мне придется использовать javascript, работающий в экземпляре QtWebEngine, чтобы узнать позицию «myWidget» и самому нарисовать данные пикселя QOpenGLWidget в этой позиции? Я действительно не хочу идти по этому пути, поскольку он не позволяет использовать такие вещи, как диалоги HTML поверх «myWidget».

Я был бы очень признателен за любую информацию здесь. Пример (если это вообще возможно) был бы фантастическим. Спасибо заранее.


person user1710407    schedule 22.02.2015    source источник


Ответы (1)


Решение для QtWebKit:

Вам нужно будет создать подкласс QWebPluginFactory и создать свой виджет в его методе create. Затем вы можете встроить свои виджеты в HTML с помощью тега <object>:

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

см. пример здесь

И еще один пример здесь

... кажется, больше не действует для нового QtWebEngine.

person Archie    schedule 22.02.2015
comment
Спасибо, Арчи! К сожалению, похоже, что они не совместимы с QtWebEngine — см. Недоступные API-интерфейсы Qt WebKit здесь: qt-project. орг/вики/ - person user1710407; 22.02.2015
comment
О, точно, мой плохой. Новый QtWebEngine имеет довольно ограниченную расширяемость по сравнению с WebKit. Можно ли вернуться обратно с помощью QtWebKit? - person Archie; 22.02.2015
comment
Я обязательно поэкспериментирую - большое спасибо за ответ. По крайней мере, подчеркнуто, что то, что мне нужно, возможно с Qt. - person user1710407; 22.02.2015