Как вызвать Qt или локальную функцию из приложения Ubuntu HTML5?

У меня есть приложение HTML5 из ​​Ubuntu SDK. Он содержит каталог index.html и js. Затем я добавляю метку «X» в html-файл следующим образом:

  <head>
    ...
    <style type="text/css">
       #quit { background-color: gray; color: white; font-weight: bold; display: block; text-align: right; }
    </style>
  </head>

  <body>
   <a id="quit">X</a>
   ...
  </body>

Требуемый эффект - при нажатии метки «X» вызывается Qt.quit () и закрывается окно приложения. , К сожалению, это не так. Приложение запускается "ubuntu-html5-app-launcher" (содержится в пакете "ubuntu-html5-theme"). Итак, как изменить ubuntu-html5-app-launcher, чтобы приложение html5 делало что-то так же, как и нативные приложения, например, просто закрывало окно, когда мы щелкали элемент, определенный в html-файле?

К вашему сведению : Я обнаружил, что если выбрать «Приложения >> Приложение HTML5» из меню «Новый файл или проект» в SDK, Qt.quit () может быть вызван из файла html (через функцию addToJavaScript):

void Html5ApplicationViewerPrivate::addToJavaScript()
{
    m_webView->page()->mainFrame()->addToJavaScriptWindowObject("Qt", this);
}

Однако приложение типа «Приложения >> Приложение HTML5» не может передавать некоторые события, такие как наведение мыши и перемещение мыши, во встроенный WebView, в результате чего, когда пользователь наводит указатель мыши на элементы html и поверх них, ничего не происходит если вы не нажмете на элементы.

Итак, мои вопросы:

  • Как заставить приложения html5, запускаемые ubuntu-html5-app-launcher, вызывать функции qt в файле html. А именно, как изменить ubuntu-html5-app-launcher

    ИЛИ

  • Как сделать приложения типа «Приложения >> Приложения HTML5» для передачи указанные события, такие как перемещение мыши и более, во встроенный html-файл, загруженный классом C ++ (в моей демонстрации Html5ApplicationViewer наследует форму QWidget)

0
задан 7 November 2014 в 20:29

2 ответа

Если Вы создаете свое приложение HTML5 с шаблоном Qt по умолчанию, то Вы по существу разрабатываете приложение Qml с Webview. Вы имеете доступ ко всем API Qml, но должны связать их с Вашим webview вручную.

то, Что обеспечивает шаблон приложений Ubuntu HTML5, является контейнером, который делает это для Вас. Мы в настоящее время поддерживаем следующие API в ubuntu-html5-container: - API W3C представлены Webview (геолокация, например) - API Единицы - API Платформы Ubuntu: Предупреждение, Учетные записи Онлайн и Концентратор Содержания в настоящее время - API Cordova: они позволяют Вам получить доступ к Камере, микрофону или получить состояние батареи, например.

, Конечно, можно также получить доступ к API онлайн также, поскольку этот тип приложения имеет 'сетевое' право доступа по умолчанию.

можно найти очень хороший обзор в: http://developer.ubuntu.com/apps/html-5/

для получения дополнительной информации о API Платформы, доступных Приложениям HTML5, см.: http://developer.ubuntu.com/api/html5/sdk-14.04/

0
ответ дан 7 November 2014 в 20:29

Шаблоны Приложений не являются Сенсорными шаблонами Ubuntu, те - на самом деле просто спокойные шаблоны Создателя, Вы не можете использовать их для Приложений Ubuntu.

при создании приложения Ubuntu HTML5 можно использовать стандартные обработчики событий от нажатия мыши JavaScript как onmousemove, onmouseover и onmouseout, хотя прямо сейчас те не работают очень хорошо. Касание Ubuntu находится в быстрой разработке, хотя так внимательно наблюдают за обновлениями.

РЕДАКТИРОВАНИЕ: Используйте сенсорные обработчики событий, как определено в Спецификация

W3C, Вы не можете действительно выйти из приложения HTML5 из самого приложения. Это не действительно проблема с тех пор, если у Вас был шанс играть с другими приложениями для Касания Ubuntu, Вы, возможно, заметили, что ни один из них не имеет кнопку выхода. На Ubuntu идея состоит в том, что Вы просто двигаете приложения в фон.

, Если Вы хотите сделать приложение C++ с HTML5 UI, необходимо прочитать ответ на этот вопрос .

0
ответ дан 7 November 2014 в 20:29

Другие вопросы по тегам:

Похожие вопросы: