【问题标题】:QT using addToJavaScriptWindowObject()QT 使用 addToJavaScriptWindowObject()
【发布时间】:2011-09-15 18:44:06
【问题描述】:

我正在尝试使用void QWebFrame::addToJavaScriptWindowObject(const QString & name, QObject * object)。我的问题是当我尝试在 JavaScript 中调用函数时

TypeError: 表达式'screen.valueChanged' [undefined] 的结果不是函数。

TimeSliceScreen::TimeSliceScreen(QWidget* parent)
:
QWidget( parent )
{
   QVBoxLayout* layout = new QVBoxLayout( this );

   _timeSlice = new QWebView( this );
   _timeSlice->setMinimumSize( 200,200);
   QSizePolicy policy = _timeSlice->sizePolicy();
   policy.setVerticalStretch(3);
   _timeSlice->setSizePolicy(policy);
   _timeSlice->settings()->setAttribute( QWebSettings::JavascriptEnabled, true );
   _timeSlice->settings()->setAttribute( QWebSettings::DeveloperExtrasEnabled, true );
   layout->addWidget( _timeSlice );
   layout->addStretch();
   layout->addSpacing( 20 );
   _timeSlice->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);

   interface = new WebPageInterface();

   connect( _timeSlice->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), 
           this, SLOT(populateJavaScriptWindowObject()) );

}
void TimeSliceScreen::populateJavaScriptWindowObject(){
   _timeSlice->page()->mainFrame()->addToJavaScriptWindowObject(QString("screen"), 
                                                                 interface);
}

WebPageInterface 是一个非常简单的类,它扩展了QObject,并有一个名为valueChanged 的槽,这是我试图调用的函数。

我的 JavaScript 是:

function call() {
    screen.valueChanged();
}

调用
<input type="hidden" id="maxhid" name="maxhid" value="{maxSlider}" onchange="call()"/>

我读过的所有内容都表明这是这样做的方法,但它对我不起作用。

【问题讨论】:

    标签: javascript c++ qt qwebview


    【解决方案1】:

    我认为 screen 是 js 中的保留名称。尝试将名称更改为其他名称。否则看起来应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      相关资源
      最近更新 更多