Я пытаюсь использовать 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()"/>
Все, что я прочитал, говорит, что это способ сделать это, но он не работает для меня.