Domanda

Sono nuovo di Qt e quello che sto cercando di fare è:

  1. Crea un'applicazione Linux utilizzando il framework Qt.
  2. Questa applicazione visualizza alcune pagine web da Internet.
  3. voglio estendere l'API JavaScript per accedere ad alcune dispositivo e dati del dispositivo basato, il che significa che alcuni dispositivi possono essere controllate utilizzando JavaScript Webkit.

Ma come faccio ad aggiungere alcune personalizzate funzioni / classi di Webkit in Qt?

È stato utile?

Soluzione

Per fortuna, esiste una certa documentazione su questo, infine: http: // doc .qt.io / QT-4.8 / QtWebKit-bridge.html

Altri suggerimenti

Ho fatto un progetto in cui ho QWebKit stablished un ponte tra Javascript e il mio codice C ++.

Per ottenere questo ho usato il metodo:

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

Questo consente di eseguire metodi dell'oggetto che si passa a addToJavaScriptWindowObject come secondo parametro da JavaScript, utilizzando l'oggetto specificato come primo parametro.

Ecco un esempio:

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()";
         }
 }

Poi, da JavaScript che posso fare:

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

Quindi, ogni volta che si preme un tasto in una casella di input, god.onChange () viene eseguito che esegue Browser :: onChange () slot.

In questo modo si evita di estendere l'API JS.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top