2011-09-15 43 views
3

我想使用void QWebFrame::addToJavaScriptWindowObject(const QString & name, QObject * object)。我的問題是,當我嘗試調用該函數在JavaScriptQT使用addToJavaScriptWindowObject()

TypeError: Result of expression 'screen.valueChanged' [undefined] is not a function.

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()"/> 

一切我已閱讀叫說,這是爲了做到這一點,但它不是爲我工作。

回答

1

我認爲屏幕是js中的保留名稱。嘗試將名稱更改爲其他名稱。否則看起來應該工作。