2014-01-25 5 views
3

У моего существующего приложения Qt есть «традиционный» графический интерфейс, содержащий панели с QtWidgets. Теперь я хочу добавить панель графического интерфейса, которая будет включать в себя перетаскивание точек кривой 2D безье, с различными типами графической обратной связи.Подключение событий HTML5 GUI к приложению Qt

Моим первым выбором для нового графического интерфейса был бы HTML5, JavaScript и SVG. Использование библиотеки, такой как D3.js или Ractive.js. Я могу разработать этот графический интерфейс более легко, чем я мог, разработав QtWidget (реализующий QGraphicsScene), чтобы сделать это - плюс с HTML5-маршрутом я смог бы повторно использовать код в онлайн-версии приложения.

Является ли единственный способ связи между веб-интерфейсом и приложением, реализуя веб-сервер на стороне C++ и используя запросы AJAX из JavaScript обратно в родительское приложение?

+0

Вы даже посмотрели графический вид/сцену в Qt и примеры, доступные в Qt Creator? Потому что есть пример, который делает именно то, что вы хотите. Просто просмотрите замечательные примеры, включенные в Qt - они того стоят. –

+1

Спасибо, да, у меня есть, и я согласен с этим, конечно * может * достичь того, что мне нужно. Не вдаваясь в дебаты по поводу достоинств JS/SVG-кодирования по кодированию Qt/QGraphicsScene, для меня лично я предпочитаю маршрут HTML5, который также даст больше возможностей в будущем. Я отредактировал свой вопрос, чтобы прояснить это и тот факт, что, как вы указываете, QGraphicsScene является очевидным выбором * Qt *. – pancake

ответ

2

Похоже, что мне нужен метод addToJavaScriptWindowObjectQWebFrame, который делает объект Qt доступным для JavaScript, раскрывая его свойства и методы.

Примером этого является Form Extractor Example.

+0

Согласно [данному документу] (http://www.qtdeveloperdays.com/sites/default/files/presentation_pdf/Webkit.pdf), QtWebKit может быть полностью или частично устаревшим после Qt 5.3. Решение выше не работает с 'QtWebEngine'. – jcm

2

В случае, если любой другой человек, как и я, спотыкается об этом вопросе в Qt 5.X days, QtWebKit устарел.

Теперь мы должны использовать QtWebEngine, механизм рендеринга, основанный на хромонике, и QtWebChannel, чтобы общаться взад и вперед с Qt и HTML-Js.

Есть несколько хороших примеров в Qt documentation, как всегда.

Смежные вопросы