我正在尝试使用void QWebFrame::addToJavaScriptWindowObject(const QString & name, QObject * object)
. 我的问题是当我尝试在 JavaScript 中调用函数时
类型错误:表达式“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()"/>
我读过的所有内容都说这是这样做的方法,但它对我不起作用。