Pregunta

Soy nuevo en Qt y lo que estoy tratando de hacer es:

  1. Crear una aplicación de Linux utilizando el marco de Qt.
  2. Esta aplicación muestra algunas páginas web de Internet.
  3. quiero extender la API JavaScript para acceder a algunos de dispositivo y datos basados ??en dispositivos, lo que significa que algunos dispositivos pueden ser controlados usando JavaScript en Webkit.

Pero, ¿cómo puedo añadir algunas funciones / clases personalizadas a Webkit en Qt?

¿Fue útil?

Solución

Afortunadamente, existe alguna documentación sobre este tema, por último: http: // doc .qt.io / qt-4,8 / QtWebKit-bridge.html

Otros consejos

He hecho un proyecto en el que QWebKit stablished un puente entre Javascript y mi código C ++.

Para lograr esto he utilizado el método:

this->page()->mainFrame()->addToJavaScriptWindowObject( "god", this );

Esto le permite ejecutar los métodos del objeto se pasa a addToJavaScriptWindowObject como segundo parámetro de Javascript, utilizando el objeto especificado como primer parámetro.

Aquí un ejemplo:

class Browser : public QWebView
{
     Q_OBJECT
     public:
         Browser( QWidget* parent=0 )
         {
            connect( this->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),    this,   SLOT(onJavaScriptWindowObjectCleared()) );
         }

     public slots:
         void onJavaScriptWindowObjectCleared()
         {
          //   QString script = "console.log('init!');";
          //   this->page()->mainFrame()->evaluateJavaScript( script );
         }

         void onChange()
         {
             qDebug() << "Browser::onChange()";
         }
 }

A continuación, a partir de Javascript que puedo hacer:

$('input:text').keydown( god.onChange );

Así que cada vez que pulse una tecla en un cuadro de entrada, god.onChange () se ejecuta el cual ejecuta Browser :: onchange () ranura.

esta manera se evita que se extiende la API de JS.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top