سؤال

أنا جديد على QT وما أحاول فعله هو:

  1. إنشاء تطبيق Linux باستخدام إطار QT.
  2. يعرض هذا التطبيق بعض صفحات الويب من الإنترنت.
  3. أريد تمديد واجهة برمجة تطبيقات JavaScript للوصول إلى بعض البيانات القائمة على الأجهزة والجهاز ، مما يعني أنه يمكن التحكم في بعض الأجهزة باستخدام JavaScript في WebKit.

ولكن كيف يمكنني إضافة بعض الوظائف/الفئات المخصصة إلى WebKit في QT؟

هل كانت مفيدة؟

المحلول

لحسن الحظ ، هناك بعض الوثائق حول هذا ، أخيرًا: http://doc.qt.io/qt-4.8/qtwebkit-bridge.html

نصائح أخرى

لقد قمت بمشروع QWebKit الذي قمت بتجديد جسر بين JavaScript ورمز C ++ الخاص بي.

لتحقيق ذلك ، استخدمت الطريقة:

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

يتيح لك ذلك تنفيذ طرق الكائن الذي تمريره إلى AddToJaVaScriptWindowObject كمعلمة ثانية من JavaScript ، باستخدام الكائن المحدد كمعلمة أولى.

مثال هنا:

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 () فتحة.

بهذه الطريقة تجنب تمديد API JS.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top