2010-11-24 10 views
2

のJavaScript APIを拡張する私はQtのに新しいですし、私は何をしようとしていることである:Qtのプログラミング:どのようにWebKitの

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

しかし、カスタム関数/クラスをQtのWebkitに追加するにはどうすればよいですか?

+0

http://doc.qt.io/qt-4.8/qtwebkit-bridge.htmlは、ここでQtのスクリプトの例の全体の束です:http://doc.qt.nokia.com/4.7/examples-script.html。 –

+0

ですが、Qt Scriptはhtml + css + javascriptを処理できますか?カスタマイズされたjavascript APIを使用してウェブページ全体を表示したい場合は、 –

+0

あなたの過去の質問の多くが、あなたがデバイス、Webベースのアップデート、およびマップで作業していることを示唆しています。私の会社(TomTom)が複数の特許を所有しているエリアです。解決策を選択した後、IP弁護士にそのような解決策が侵害されるかどうかを確認することができます。 – MSalters

答えて

6

幸いなことに、最終的には、この上でいくつかのドキュメントが存在する:

+0

偉大な医師、ありがとう –

6

私はJavascriptとC++コードの間のブリッジを確立したQWebKitプロジェクトを実行しました。私はこの方法を使用し、これを達成するために

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

これは、あなたが最初のパラメータとして指定されたオブジェクトを使用して、JavaScriptから2番目のパラメータとして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()が実行されますBrowser :: onChange()スロットを実行します。

このようにして、JS APIを拡張しないようにします。

+0

ありがとう、大いに助かりました –

関連する問題