【发布时间】: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