質問

私はQTに慣れていますが、私がやろうとしていることは次のとおりです。

  1. QTフレームワークを使用してLinuxアプリを作成します。
  2. このアプリは、インターネットからいくつかのWebページを表示します。
  3. JavaScript APIを拡張して、いくつかのデバイスベースのデータとデバイスベースのデータにアクセスしたいと考えています。つまり、WebKitでJavaScriptを使用して一部のデバイスを制御できます。

しかし、QTのWebKitにカスタマイズされた関数/クラスを追加するにはどうすればよいですか?

役に立ちましたか?

解決

幸いなことに、これに関するいくつかのドキュメントが存在します、最終的に: http://doc.qt.io/qt-4.8/qtwebkit-bridge.html

他のヒント

JavaScriptとC ++コードの間のブリッジを安定させたQWEBKITプロジェクトを作成しました。

これを達成するために、私は方法を使用しました:

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

これにより、最初のパラメーターとして指定されたオブジェクトを使用して、JavaScriptの2番目のパラメーターとしてaddtojavascriptwindowobjectをaddtojavascriptwindowobjectに渡すオブジェクトのメソッドを実行できます。

ここに例:

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

それから、JavaScriptから私ができる:

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

そのため、入力ボックスにキーを押すたびに、god.onchange()が実行され、ブラウザ:: onchange()スロットが実行されます。

これにより、JS APIの拡張を避けます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top