Мне нужна библиотека C ++ для создания автономного собственного приложения. Библиотека должна поддерживать создание GUI с использованием тегов XML. Я получил некоторую информацию о XUL Mozilla, но этот XUL требует XULRunner для запуска приложения.
Сценарий таков:
What I have:
(1) C++ code in .cpp files
(2) GUI defined in .xml files
The output I need:
A single stand-alone native application
После нескольких часов испытаний я получил заключение. Идеально использовать Qt для поставленной цели.
Qt предлагает виджет (он же элемент управления, он же компонент GUI) с именем QWebView, который отображает HTML5 с помощью WebKit. Мы можем использовать этот QWebView вместе с QMainWindow, чтобы сформировать нативное приложение.
Вызов JS из C ++ может быть выполнен следующим образом:
QWebView Webview;
Webview->load(...);
...
Webview->page()->mainFrame()->evaluateJavaScript("alert('whatever');");
Вызов C ++ из JS может быть выполнен аналогично:
//(1) in C++ code:
QWebView Webview;
Webview->load(...);
QObject Object; //or any object inherited from QObject
...
Webview->page()->mainFrame()->addToJavaScriptWindowObject("Cpp",&Object);
//(2) in HTML/JS code:
<script>
Cpp.some_function(); //declared in the QObject above, with 'public slots:'
</script>
Однако в результате трудно получить один двоичный файл, поскольку приложению требуется библиотека динамических ссылок Qt (ядро Qt, графический интерфейс Qt, сеть Qt, веб-набор Qt и т. Д.). Сборка установщика может решить проблему.
Других решений пока нет …