Question

Je suis nouveau à Qt et ce que je suis en train de faire est:

  1. Créer une application Linux en utilisant le framework Qt.
  2. Cette application affiche des pages Web à partir de l'Internet.
  3. Je veux étendre l'API JavaScript pour accéder à certaines données et appareil à base de l'appareil, ce qui signifie que certains appareils peuvent être contrôlés à l'aide JavaScript Webkit.

Mais comment puis-je ajouter des fonctions personnalisées / classes WebKit dans Qt?

Était-ce utile?

La solution

Heureusement, il existe une documentation sur ce point, enfin: http: // doc .qt.io / qt-4.8 / qtwebkit-bridge.html

Autres conseils

Je l'ai fait un projet QWebKit dans lequel j'affermis un pont entre le code Javascript et mon C ++.

Pour cela je la méthode:

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

Cela vous permet d'exécuter des méthodes de l'objet que vous passez à addToJavaScriptWindowObject comme second paramètre de Javascript, en utilisant l'objet spécifié comme premier paramètre.

Voici un exemple:

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

Alors, de Javascript que je peux faire:

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

Ainsi, chaque fois que j'appuyez sur une touche dans une zone de saisie, god.onChange () est exécutée qui exécute navigateur :: sous onChange ().

Vous évitez ainsi l'extension de la JS api.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top