Como chamar Qt ou função local do Ubuntu HTML5 App?

0

Eu criei um aplicativo HTML5 a partir do Ubuntu SDK. Ele contém um diretório index.html e js. Em seguida, adiciono o rótulo "X" no arquivo html assim:

  <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>

O efeito desejado é quando o rótulo “X” é clicado, o Qt.quit () é chamado e a janela do aplicativo é fechada. Infelizmente não vai. O aplicativo é lançado por "ubuntu-html5-app-launcher" (contido no pacote "ubuntu-html5-theme"). Então, como modificar o ubuntu-html5-app-launcher para permitir que o aplicativo html5 faça algo assim como aplicativos nativos, por exemplo, apenas feche a janela quando clicarmos no item definido no arquivo html?

FYI: descobri que se escolho o modelo "Aplicativos > > Aplicativo HTML5" do menu "Novo arquivo ou projeto" no SDK, o Qt.quit () pode ser chamado pelo arquivo html (através da função addToJavaScript):

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

No entanto, o aplicativo "Aplicativos > > Aplicativo HTML5" não pode transferir alguns eventos, como passar o mouse e mover o mouse para o WebView integrado. Como resultado, quando o usuário move o mouse sobre os elementos do html, nada acontecerá a menos que você clique nos elementos.

Então, minhas perguntas são:

  • Como fazer aplicativos html5 lançados pelo ubuntu-html5-app-launcher para chamar qt funciona dentro do arquivo html. Ou seja, como modificar ubuntu-html5-app-launcher

    OR

  • Como transformar aplicativos "> > Aplicativo HTML5" em aplicativos para transferência eventos especificados, como mover o mouse e passar, para o html interno arquivo carregado pela classe C ++ (na minha demonstração é Html5ApplicationViewer herda a forma QWidget)

por Jonaszhang 25.02.2014 / 07:37

2 respostas

3

Os modelos de Aplicativos não são modelos do Ubuntu Touch, na verdade são apenas modelos do Qt Creator, você não pode usá-los para o Ubuntu Apps.

Quando você faz um aplicativo Ubuntu HTML5, você pode usar manipuladores de eventos de mouse JavaScript padrão, como onmousemove, onmouseover e onmouseout, embora, no momento, eles não funcionem muito bem. O Ubuntu Touch está em rápido desenvolvimento, então fique de olho nas atualizações.

EDIT: Use manipuladores de eventos de toque, conforme especificado na Especificação do W3C

Você não pode realmente sair de um aplicativo HTML5 do próprio aplicativo. Não é realmente um problema, pois se você tivesse a chance de jogar com outros aplicativos para o Ubuntu Touch, você deve ter notado que nenhum deles tem um botão de saída. No Ubuntu, a ideia é que você simplesmente coloque aplicativos em segundo plano.

Se você quiser criar um aplicativo C ++ com uma interface HTML5, leia a resposta para esta questão .

    
por frecel 27.02.2014 / 09:00
1

Se você criar seu aplicativo HTML5 com o modelo Qt padrão, estará essencialmente desenvolvendo um aplicativo Qml com um Webview. Você tem acesso a todas as APIs do Qml, mas precisa vinculá-las manualmente à sua webview.

O que o modelo do aplicativo HTML5 do Ubuntu fornece é um contêiner que faz isso para você. Atualmente, suportamos as seguintes APIs no contêiner do ubuntu-html5: - APIs do W3C expostas pela Webview (geolocalização, por exemplo) - APIs do Unity - APIs da plataforma Ubuntu: alarme, contas on-line e hub de conteúdo atualmente - APIs do Cordova: eles permitem que você acesse a câmera, o microfone ou obtenha o status da bateria, por exemplo.

É claro, você também pode acessar APIs on-line, pois esse tipo de aplicativo tem o privilégio de acesso 'network' por padrão.

Você pode encontrar uma visão geral muito boa em: link

Para obter detalhes sobre as APIs da plataforma disponíveis para aplicativos HTML5, consulte: link

    
por dbarth 27.02.2014 / 10:20